1/*
2 * Copyright (c) 2023-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 "dm_radar_helper.h"
17
18#include <algorithm>
19#include <cmath>
20#include <sstream>
21#include <iomanip>
22#include <cJSON.h>
23#include <errors.h>
24#include "hisysevent.h"
25#include "dm_constants.h"
26#include "dm_log.h"
27#include "parameter.h"
28#include "accesstoken_kit.h"
29#include "access_token.h"
30#include "hap_token_info.h"
31#include "ipc_skeleton.h"
32#include "native_token_info.h"
33#include "tokenid_kit.h"
34using namespace OHOS::Security::AccessToken;
35namespace OHOS {
36namespace DistributedHardware {
37DM_IMPLEMENT_SINGLE_INSTANCE(DmRadarHelper);
38bool DmRadarHelper::ReportDiscoverRegCallback(struct RadarInfo &info)
39{
40    int32_t res = DM_OK;
41    if (info.stageRes == static_cast<int32_t>(StageRes::STAGE_IDLE)) {
42        res = HiSysEventWrite(
43            OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
44            DM_DISCOVER_BEHAVIOR,
45            HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
46            "ORG_PKG", ORGPKGNAME,
47            "HOST_PKG", info.hostName,
48            "FUNC", info.funcName,
49            "API_TYPE", GetApiType(),
50            "BIZ_SCENE", static_cast<int32_t>(DiscoverScene::DM_DISCOVER),
51            "BIZ_STAGE", static_cast<int32_t>(DisCoverStage::DISCOVER_REGISTER_CALLBACK),
52            "STAGE_RES", info.stageRes,
53            "BIZ_STATE", info.bizState,
54            "TO_CALL_PKG", info.toCallPkg,
55            "COMM_SERV", info.commServ);
56    } else {
57        res = HiSysEventWrite(
58            OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
59            DM_DISCOVER_BEHAVIOR,
60            HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
61            "ORG_PKG", ORGPKGNAME,
62            "FUNC", info.funcName,
63            "API_TYPE", GetApiType(),
64            "BIZ_SCENE", static_cast<int32_t>(DiscoverScene::DM_DISCOVER),
65            "BIZ_STAGE", static_cast<int32_t>(DisCoverStage::DISCOVER_REGISTER_CALLBACK),
66            "STAGE_RES", info.stageRes,
67            "BIZ_STATE", info.bizState,
68            "TO_CALL_PKG", info.toCallPkg,
69            "COMM_SERV", info.commServ,
70            "ERROR_CODE", info.errCode);
71    }
72    if (res != DM_OK) {
73        LOGE("ReportDiscoverRegCallback error, res:%{public}d", res);
74        return false;
75    }
76    return true;
77}
78
79bool DmRadarHelper::ReportDiscoverResCallback(struct RadarInfo &info)
80{
81    int32_t res = DM_OK;
82    if (info.stageRes == static_cast<int32_t>(StageRes::STAGE_SUCC)) {
83        res = HiSysEventWrite(
84            OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
85            DM_DISCOVER_BEHAVIOR,
86            HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
87            "ORG_PKG", ORGPKGNAME,
88            "HOST_PKG", SOFTBUSNAME,
89            "FUNC", info.funcName,
90            "API_TYPE", GetApiType(),
91            "BIZ_SCENE", static_cast<int32_t>(DiscoverScene::DM_DISCOVER),
92            "BIZ_STAGE", static_cast<int32_t>(DisCoverStage::DISCOVER_REGISTER_CALLBACK),
93            "STAGE_RES", static_cast<int32_t>(StageRes::STAGE_SUCC),
94            "PEER_UDID", GetAnonyUdid(info.peerUdid),
95            "LOCAL_UDID", GetAnonyLocalUdid(),
96            "COMM_SERV", static_cast<int32_t>(CommServ::USE_SOFTBUS),
97            "PEER_NET_ID", GetAnonyUdid(info.peerNetId));
98    } else {
99        res = HiSysEventWrite(
100            OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
101            DM_DISCOVER_BEHAVIOR,
102            HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
103            "ORG_PKG", ORGPKGNAME,
104            "HOST_PKG", SOFTBUSNAME,
105            "FUNC", info.funcName,
106            "API_TYPE", GetApiType(),
107            "BIZ_SCENE", static_cast<int32_t>(DiscoverScene::DM_DISCOVER),
108            "BIZ_STAGE", static_cast<int32_t>(DisCoverStage::DISCOVER_REGISTER_CALLBACK),
109            "STAGE_RES", static_cast<int32_t>(StageRes::STAGE_FAIL),
110            "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_END),
111            "PEER_UDID", GetAnonyUdid(info.peerUdid),
112            "LOCAL_UDID", GetAnonyLocalUdid(),
113            "COMM_SERV", static_cast<int32_t>(CommServ::USE_SOFTBUS),
114            "ERROR_CODE", info.errCode);
115    }
116
117    if (res != DM_OK) {
118        LOGE("ReportDiscoverResCallback error, res:%{public}d", res);
119        return false;
120    }
121    return true;
122}
123
124bool DmRadarHelper::ReportDiscoverUserRes(struct RadarInfo &info)
125{
126    int32_t res = DM_OK;
127    if (info.stageRes == static_cast<int32_t>(StageRes::STAGE_CANCEL)) {
128        res = HiSysEventWrite(
129            OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
130            DM_DISCOVER_BEHAVIOR,
131            HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
132            "ORG_PKG", ORGPKGNAME,
133            "HOST_PKG", info.hostName,
134            "FUNC", info.funcName,
135            "API_TYPE", GetApiType(),
136            "BIZ_SCENE", static_cast<int32_t>(DiscoverScene::DM_DISCOVER),
137            "BIZ_STAGE", static_cast<int32_t>(DisCoverStage::DISCOVER_USER_DEAL_RES),
138            "STAGE_RES", info.stageRes,
139            "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_END),
140            "COMM_SERV", static_cast<int32_t>(CommServ::USE_SOFTBUS));
141    } else if (info.stageRes == static_cast<int32_t>(StageRes::STAGE_SUCC)) {
142        res = HiSysEventWrite(
143            OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
144            DM_DISCOVER_BEHAVIOR,
145            HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
146            "ORG_PKG", ORGPKGNAME,
147            "FUNC", info.funcName,
148            "API_TYPE", GetApiType(),
149            "BIZ_SCENE", static_cast<int32_t>(DiscoverScene::DM_DISCOVER),
150            "BIZ_STAGE", static_cast<int32_t>(DisCoverStage::DISCOVER_USER_DEAL_RES),
151            "STAGE_RES", info.stageRes,
152            "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_END));
153    } else {
154        res = HiSysEventWrite(
155            OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
156            DM_DISCOVER_BEHAVIOR,
157            HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
158            "ORG_PKG", ORGPKGNAME,
159            "HOST_PKG", info.hostName,
160            "FUNC", info.funcName,
161            "API_TYPE", GetApiType(),
162            "BIZ_SCENE", static_cast<int32_t>(DiscoverScene::DM_DISCOVER),
163            "BIZ_STAGE", static_cast<int32_t>(DisCoverStage::DISCOVER_USER_DEAL_RES),
164            "STAGE_RES", info.stageRes,
165            "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_END),
166            "COMM_SERV", static_cast<int32_t>(CommServ::USE_SOFTBUS),
167            "ERROR_CODE", info.errCode);
168    }
169    if (res != DM_OK) {
170        LOGE("ReportDiscoverUserRes error, res:%{public}d", res);
171        return false;
172    }
173    return true;
174}
175
176bool DmRadarHelper::ReportAuthStart(const std::string &peerUdid, const std::string &pkgName)
177{
178    int32_t res = HiSysEventWrite(
179        OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
180        DM_AUTHCATION_BEHAVIOR,
181        HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
182        "ORG_PKG", ORGPKGNAME,
183        "FUNC", "AuthenticateDevice",
184        "HOST_PKG", pkgName,
185        "API_TYPE", GetApiType(),
186        "BIZ_SCENE", static_cast<int32_t>(AuthScene::DM_AUTHCATION),
187        "BIZ_STAGE", static_cast<int32_t>(AuthStage::AUTH_START),
188        "STAGE_RES", static_cast<int32_t>(StageRes::STAGE_SUCC),
189        "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_START),
190        "IS_TRUST", static_cast<int32_t>(TrustStatus::NOT_TRUST),
191        "PEER_UDID", GetAnonyUdid(peerUdid),
192        "LOCAL_UDID", GetAnonyLocalUdid());
193    if (res != DM_OK) {
194        LOGE("ReportAuthStart error, res:%{public}d", res);
195        return false;
196    }
197    return true;
198}
199
200bool DmRadarHelper::ReportAuthOpenSession(struct RadarInfo &info)
201{
202    int32_t res = DM_OK;
203    if (info.stageRes == static_cast<int32_t>(StageRes::STAGE_IDLE)) {
204        res = HiSysEventWrite(
205            OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
206            DM_AUTHCATION_BEHAVIOR,
207            HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
208            "ORG_PKG", ORGPKGNAME,
209            "FUNC", info.funcName,
210            "BIZ_SCENE", static_cast<int32_t>(AuthScene::DM_AUTHCATION),
211            "BIZ_STAGE", static_cast<int32_t>(AuthStage::AUTH_OPEN_SESSION),
212            "STAGE_RES", info.stageRes,
213            "PEER_UDID", GetAnonyUdid(info.peerUdid),
214            "LOCAL_UDID", GetAnonyLocalUdid(),
215            "CH_ID", info.channelId,
216            "IS_TRUST", info.isTrust,
217            "COMM_SERV", info.commServ,
218            "LOCAL_SESS_NAME", info.localSessName,
219            "PEER_SESS_NAME", info.peerSessName);
220    } else {
221        res = HiSysEventWrite(
222            OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
223            DM_AUTHCATION_BEHAVIOR,
224            HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
225            "ORG_PKG", ORGPKGNAME,
226            "FUNC", info.funcName,
227            "BIZ_SCENE", static_cast<int32_t>(AuthScene::DM_AUTHCATION),
228            "BIZ_STAGE", static_cast<int32_t>(AuthStage::AUTH_OPEN_SESSION),
229            "BIZ_STATE", info.bizState,
230            "STAGE_RES", info.stageRes,
231            "PEER_UDID", GetAnonyUdid(info.peerUdid),
232            "LOCAL_UDID", GetAnonyLocalUdid(),
233            "CH_ID", info.channelId,
234            "IS_TRUST", info.isTrust,
235            "COMM_SERV", info.commServ,
236            "LOCAL_SESS_NAME", info.localSessName,
237            "PEER_SESS_NAME", info.peerSessName,
238            "ERROR_CODE", info.errCode);
239    }
240    if (res != DM_OK) {
241        LOGE("ReportAuthOpenSession error, res:%{public}d", res);
242        return false;
243    }
244    return true;
245}
246
247bool DmRadarHelper::ReportAuthSessionOpenCb(struct RadarInfo &info)
248{
249    int32_t res = HiSysEventWrite(
250        OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
251        DM_AUTHCATION_BEHAVIOR,
252        HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
253        "ORG_PKG", ORGPKGNAME,
254        "FUNC", info.funcName,
255        "BIZ_SCENE", static_cast<int32_t>(AuthScene::DM_AUTHCATION),
256        "BIZ_STAGE", static_cast<int32_t>(AuthStage::AUTH_OPEN_SESSION),
257        "STAGE_RES", info.stageRes,
258        "PEER_UDID", GetAnonyUdid(info.peerUdid),
259        "LOCAL_UDID", GetAnonyLocalUdid(),
260        "CH_ID", info.channelId);
261    if (res != DM_OK) {
262        LOGE("ReportAuthSessionOpenCb error, res:%{public}d", res);
263        return false;
264    }
265    return true;
266}
267
268bool DmRadarHelper::ReportAuthSendRequest(struct RadarInfo &info)
269{
270    int32_t res = HiSysEventWrite(
271        OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
272        DM_AUTHCATION_BEHAVIOR,
273        HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
274        "ORG_PKG", ORGPKGNAME,
275        "FUNC", info.funcName,
276        "BIZ_SCENE", static_cast<int32_t>(AuthScene::DM_AUTHCATION),
277        "BIZ_STAGE", static_cast<int32_t>(AuthStage::AUTH_SEND_REQUEST),
278        "STAGE_RES", static_cast<int32_t>(StageRes::STAGE_SUCC),
279        "TO_CALL_PKG", SOFTBUSNAME,
280        "LOCAL_SESS_NAME", DM_SESSION_NAME,
281        "IS_TRUST", static_cast<int32_t>(TrustStatus::NOT_TRUST),
282        "COMM_SERV", static_cast<int32_t>(CommServ::USE_SOFTBUS));
283    if (res != DM_OK) {
284        LOGE("ReportAuthSessionOpenCb error, res:%{public}d", res);
285        return false;
286    }
287    return true;
288}
289
290bool DmRadarHelper::ReportAuthPullAuthBox(struct RadarInfo &info)
291{
292    int32_t res = HiSysEventWrite(
293        OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
294        DM_AUTHCATION_BEHAVIOR,
295        HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
296        "ORG_PKG", ORGPKGNAME,
297        "FUNC", info.funcName,
298        "BIZ_SCENE", static_cast<int32_t>(AuthScene::DM_AUTHCATION),
299        "BIZ_STAGE", static_cast<int32_t>(AuthStage::AUTH_PULL_AUTH_BOX),
300        "STAGE_RES", info.stageRes);
301    if (res != DM_OK) {
302        LOGE("ReportAuthPullAuthBox error, res:%{public}d", res);
303        return false;
304    }
305    return true;
306}
307
308bool DmRadarHelper::ReportAuthConfirmBox(struct RadarInfo &info)
309{
310    int32_t res = DM_OK;
311    if (info.stageRes == static_cast<int32_t>(StageRes::STAGE_SUCC)) {
312        res = HiSysEventWrite(
313            OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
314            DM_AUTHCATION_BEHAVIOR,
315            HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
316            "ORG_PKG", ORGPKGNAME,
317            "FUNC", info.funcName,
318            "BIZ_SCENE", static_cast<int32_t>(AuthScene::DM_AUTHCATION),
319            "BIZ_STAGE", static_cast<int32_t>(AuthStage::AUTH_PULL_AUTH_BOX),
320            "STAGE_RES", info.stageRes);
321    } else {
322        res = HiSysEventWrite(
323            OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
324            DM_AUTHCATION_BEHAVIOR,
325            HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
326            "ORG_PKG", ORGPKGNAME,
327            "FUNC", info.funcName,
328            "BIZ_SCENE", static_cast<int32_t>(AuthScene::DM_AUTHCATION),
329            "BIZ_STAGE", static_cast<int32_t>(AuthStage::AUTH_PULL_AUTH_BOX),
330            "STAGE_RES", info.stageRes,
331            "BIZ_STATE", info.bizState,
332            "ERROR_CODE", info.errCode);
333    }
334    if (res != DM_OK) {
335        LOGE("ReportAuthConfirmBox error, res:%{public}d", res);
336        return false;
337    }
338    return true;
339}
340
341bool DmRadarHelper::ReportAuthCreateGroup(struct RadarInfo &info)
342{
343    int32_t res = DM_OK;
344    if (info.stageRes == static_cast<int32_t>(StageRes::STAGE_IDLE)) {
345        res = HiSysEventWrite(
346            OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
347            DM_AUTHCATION_BEHAVIOR,
348            HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
349            "ORG_PKG", ORGPKGNAME,
350            "FUNC", info.funcName,
351            "BIZ_SCENE", static_cast<int32_t>(AuthScene::DM_AUTHCATION),
352            "BIZ_STAGE", static_cast<int32_t>(AuthStage::AUTH_CREATE_HICHAIN_GROUP),
353            "STAGE_RES", info.stageRes,
354            "LOCAL_UDID", GetAnonyLocalUdid(),
355            "TO_CALL_PKG", info.toCallPkg);
356    } else {
357        res = HiSysEventWrite(
358            OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
359            DM_AUTHCATION_BEHAVIOR,
360            HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
361            "ORG_PKG", ORGPKGNAME,
362            "FUNC", info.funcName,
363            "BIZ_SCENE", static_cast<int32_t>(AuthScene::DM_AUTHCATION),
364            "BIZ_STAGE", static_cast<int32_t>(AuthStage::AUTH_CREATE_HICHAIN_GROUP),
365            "STAGE_RES", info.stageRes,
366            "BIZ_STATE", info.bizState,
367            "TO_CALL_PKG", info.toCallPkg,
368            "LOCAL_UDID", GetAnonyLocalUdid(),
369            "ERROR_CODE", info.errCode);
370    }
371    if (res != DM_OK) {
372        LOGE("ReportAuthCreateGroup error, res:%{public}d", res);
373        return false;
374    }
375    return true;
376}
377
378bool DmRadarHelper::ReportAuthCreateGroupCb(std::string funcName, int32_t stageRes)
379{
380    int32_t res = DM_OK;
381    if (stageRes == static_cast<int32_t>(StageRes::STAGE_SUCC)) {
382        res = HiSysEventWrite(
383            OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
384            DM_AUTHCATION_BEHAVIOR,
385            HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
386            "ORG_PKG", ORGPKGNAME,
387            "FUNC", funcName,
388            "BIZ_SCENE", static_cast<int32_t>(AuthScene::DM_AUTHCATION),
389            "BIZ_STAGE", static_cast<int32_t>(AuthStage::AUTH_CREATE_HICHAIN_GROUP),
390            "STAGE_RES", stageRes,
391            "HOST_PKG", HICHAINNAME);
392    } else {
393        res = HiSysEventWrite(
394            OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
395            DM_AUTHCATION_BEHAVIOR,
396            HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
397            "ORG_PKG", ORGPKGNAME,
398            "FUNC", funcName,
399            "BIZ_SCENE", static_cast<int32_t>(AuthScene::DM_AUTHCATION),
400            "BIZ_STAGE", static_cast<int32_t>(AuthStage::AUTH_CREATE_HICHAIN_GROUP),
401            "STAGE_RES", stageRes,
402            "HOST_PKG", HICHAINNAME,
403            "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_END),
404            "ERROR_CODE", GetErrCode(ERR_DM_CREATE_GROUP_FAILED));
405    }
406    if (res != DM_OK) {
407        LOGE("ReportAuthCreateGroupCb error, res:%{public}d", res);
408        return false;
409    }
410    return true;
411}
412
413bool DmRadarHelper::ReportAuthPullPinBox(struct RadarInfo &info)
414{
415    int32_t res = HiSysEventWrite(
416        OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
417        DM_AUTHCATION_BEHAVIOR,
418        HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
419        "ORG_PKG", ORGPKGNAME,
420        "FUNC", info.funcName,
421        "BIZ_SCENE", static_cast<int32_t>(AuthScene::DM_AUTHCATION),
422        "BIZ_STAGE", static_cast<int32_t>(AuthStage::AUTH_PULL_PIN_BOX_START),
423        "STAGE_RES", info.stageRes);
424    if (res != DM_OK) {
425        LOGE("ReportAuthPullPinBox error, res:%{public}d", res);
426        return false;
427    }
428    return true;
429}
430
431bool DmRadarHelper::ReportAuthInputPinBox(struct RadarInfo &info)
432{
433    int32_t res = DM_OK;
434    if (info.stageRes == static_cast<int32_t>(StageRes::STAGE_SUCC)) {
435        res = HiSysEventWrite(
436            OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
437            DM_AUTHCATION_BEHAVIOR,
438            HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
439            "ORG_PKG", ORGPKGNAME,
440            "FUNC", info.funcName,
441            "BIZ_SCENE", static_cast<int32_t>(AuthScene::DM_AUTHCATION),
442            "BIZ_STAGE", static_cast<int32_t>(AuthStage::AUTH_PULL_PIN_INPUT_BOX_END),
443            "STAGE_RES", info.stageRes);
444    } else {
445        res = HiSysEventWrite(
446            OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
447            DM_AUTHCATION_BEHAVIOR,
448            HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
449            "ORG_PKG", ORGPKGNAME,
450            "FUNC", info.funcName,
451            "BIZ_SCENE", static_cast<int32_t>(AuthScene::DM_AUTHCATION),
452            "BIZ_STAGE", static_cast<int32_t>(AuthStage::AUTH_PULL_PIN_INPUT_BOX_END),
453            "STAGE_RES", info.stageRes,
454            "BIZ_STATE", info.bizState,
455            "ERROR_CODE", info.errCode);
456    }
457    if (res != DM_OK) {
458        LOGE("ReportAuthInputPinBox error, res:%{public}d", res);
459        return false;
460    }
461    return true;
462}
463
464bool DmRadarHelper::ReportAuthAddGroup(struct RadarInfo &info)
465{
466    int32_t res = DM_OK;
467    if (info.stageRes == static_cast<int32_t>(StageRes::STAGE_IDLE)) {
468        res = HiSysEventWrite(
469            OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
470            DM_AUTHCATION_BEHAVIOR,
471            HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
472            "ORG_PKG", ORGPKGNAME,
473            "FUNC", info.funcName,
474            "BIZ_SCENE", static_cast<int32_t>(AuthScene::DM_AUTHCATION),
475            "BIZ_STAGE", static_cast<int32_t>(AuthStage::AUTH_ADD_HICHAIN_GROUP),
476            "STAGE_RES", info.stageRes,
477            "LOCAL_UDID", GetAnonyLocalUdid(),
478            "PEER_UDID", GetAnonyUdid(info.peerUdid),
479            "TO_CALL_PKG", HICHAINNAME);
480    } else {
481        res = HiSysEventWrite(
482            OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
483            DM_AUTHCATION_BEHAVIOR,
484            HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
485            "ORG_PKG", ORGPKGNAME,
486            "FUNC", info.funcName,
487            "BIZ_SCENE", static_cast<int32_t>(AuthScene::DM_AUTHCATION),
488            "BIZ_STAGE", static_cast<int32_t>(AuthStage::AUTH_ADD_HICHAIN_GROUP),
489            "STAGE_RES", info.stageRes,
490            "LOCAL_UDID", GetAnonyLocalUdid(),
491            "PEER_UDID", GetAnonyUdid(info.peerUdid),
492            "TO_CALL_PKG", HICHAINNAME,
493            "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_END),
494            "ERROR_CODE", info.errCode);
495    }
496    if (res != DM_OK) {
497        LOGE("ReportAuthAddGroup error, res:%{public}d", res);
498        return false;
499    }
500    return true;
501}
502
503bool DmRadarHelper::ReportAuthAddGroupCb(std::string funcName, int32_t stageRes)
504{
505    int32_t res = DM_OK;
506    if (stageRes == static_cast<int32_t>(StageRes::STAGE_SUCC)) {
507        res = HiSysEventWrite(
508            OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
509            DM_AUTHCATION_BEHAVIOR,
510            HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
511            "ORG_PKG", ORGPKGNAME,
512            "FUNC", funcName,
513            "BIZ_SCENE", static_cast<int32_t>(AuthScene::DM_AUTHCATION),
514            "BIZ_STAGE", static_cast<int32_t>(AuthStage::AUTH_ADD_HICHAIN_GROUP),
515            "STAGE_RES", stageRes,
516            "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_END),
517            "HOST_PKG", HICHAINNAME);
518    } else {
519        res = HiSysEventWrite(
520            OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
521            DM_AUTHCATION_BEHAVIOR,
522            HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
523            "ORG_PKG", ORGPKGNAME,
524            "FUNC", funcName,
525            "BIZ_SCENE", static_cast<int32_t>(AuthScene::DM_AUTHCATION),
526            "BIZ_STAGE", static_cast<int32_t>(AuthStage::AUTH_ADD_HICHAIN_GROUP),
527            "STAGE_RES", stageRes,
528            "HOST_PKG", HICHAINNAME,
529            "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_END),
530            "ERROR_CODE", GetErrCode(ERR_DM_ADD_GROUP_FAILED));
531    }
532    if (res != DM_OK) {
533        LOGE("ReportAuthAddGroupCb error, res:%{public}d", res);
534        return false;
535    }
536    return true;
537}
538
539bool DmRadarHelper::ReportNetworkOnline(struct RadarInfo &info)
540{
541    int32_t res = HiSysEventWrite(
542        OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
543        DM_AUTHCATION_BEHAVIOR,
544        HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
545        "ORG_PKG", ORGPKGNAME,
546        "FUNC", info.funcName,
547        "BIZ_SCENE", static_cast<int32_t>(AuthScene::DM_NETWORK),
548        "BIZ_STAGE", static_cast<int32_t>(NetworkStage::NETWORK_ONLINE),
549        "STAGE_RES", info.stageRes,
550        "BIZ_STATE", info.bizState,
551        "LOCAL_UDID", GetAnonyLocalUdid(),
552        "PEER_UDID", GetAnonyUdid(info.peerUdid),
553        "PEER_NET_ID", GetAnonyUdid(info.peerNetId),
554        "IS_TRUST", info.isTrust);
555    if (res != DM_OK) {
556        LOGE("ReportNetworkOnline error, res:%{public}d", res);
557        return false;
558    }
559    return true;
560}
561
562bool DmRadarHelper::ReportNetworkOffline(struct RadarInfo &info)
563{
564    int32_t res = HiSysEventWrite(
565        OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
566        DM_AUTHCATION_BEHAVIOR,
567        HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
568        "ORG_PKG", ORGPKGNAME,
569        "FUNC", info.funcName,
570        "BIZ_SCENE", static_cast<int32_t>(AuthScene::DM_NETWORK),
571        "BIZ_STAGE", static_cast<int32_t>(NetworkStage::NETWORK_OFFLINE),
572        "STAGE_RES", info.stageRes,
573        "BIZ_STATE", info.bizState,
574        "LOCAL_UDID", GetAnonyLocalUdid(),
575        "PEER_UDID", GetAnonyUdid(info.peerUdid),
576        "PEER_NET_ID", GetAnonyUdid(info.peerNetId));
577    if (res != DM_OK) {
578        LOGE("ReportNetworkOffline error, res:%{public}d", res);
579        return false;
580    }
581    return true;
582}
583
584bool DmRadarHelper::ReportDeleteTrustRelation(struct RadarInfo &info)
585{
586    int32_t res = HiSysEventWrite(
587        OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
588        DM_AUTHCATION_BEHAVIOR,
589        HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
590        "ORG_PKG", ORGPKGNAME,
591        "HOST_PKG", info.hostName,
592        "FUNC", info.funcName,
593        "API_TYPE", GetApiType(),
594        "BIZ_SCENE", static_cast<int32_t>(AuthScene::DM_DELET_TRUST_RELATION),
595        "BIZ_STAGE", static_cast<int32_t>(DeleteTrust::DELETE_TRUST),
596        "STAGE_RES", static_cast<int32_t>(StageRes::STAGE_SUCC),
597        "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_END),
598        "LOCAL_UDID", GetAnonyLocalUdid(),
599        "PEER_UDID", GetAnonyUdid(info.peerUdid),
600        "PEER_NET_ID", GetAnonyUdid(info.peerNetId),
601        "TO_CALL_PKG", info.toCallPkg);
602    if (res != DM_OK) {
603        LOGE("ReportDeleteTrustRelation error, res:%{public}d", res);
604        return false;
605    }
606    return true;
607}
608
609void DmRadarHelper::ReportCreatePinHolder(std::string hostName,
610    int32_t channelId, std::string peerUdid, int32_t errCode, int32_t stageRes)
611{
612    int32_t res = DM_OK;
613    if (stageRes == static_cast<int32_t>(StageRes::STAGE_SUCC)) {
614        res = HiSysEventWrite(
615            OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
616            DM_AUTHCATION_BEHAVIOR,
617            HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
618            "ORG_PKG", ORGPKGNAME,
619            "HOST_PKG", hostName,
620            "FUNC", "CreatePinHolder",
621            "API_TYPE", GetApiType(),
622            "BIZ_SCENE", static_cast<int32_t>(AuthScene::DM_PIN_HOLDER),
623            "BIZ_STAGE", static_cast<int32_t>(PinHolderStage::CREATE_PIN_HOLDER),
624            "STAGE_RES", static_cast<int32_t>(StageRes::STAGE_SUCC),
625            "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_START),
626            "CH_ID", channelId,
627            "LOCAL_UDID", GetAnonyLocalUdid(),
628            "PEER_UDID", GetAnonyUdid(peerUdid),
629            "TO_CALL_PKG", SOFTBUSNAME);
630        if (res != DM_OK) {
631            LOGE("ReportDeleteTrustRelation error, res:%{public}d", res);
632            return;
633        }
634    } else {
635        res = HiSysEventWrite(
636            OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
637            DM_AUTHCATION_BEHAVIOR,
638            HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
639            "ORG_PKG", ORGPKGNAME,
640            "HOST_PKG", hostName,
641            "FUNC", "CreatePinHolder",
642            "API_TYPE", GetApiType(),
643            "BIZ_SCENE", static_cast<int32_t>(AuthScene::DM_PIN_HOLDER),
644            "BIZ_STAGE", static_cast<int32_t>(PinHolderStage::CREATE_PIN_HOLDER),
645            "STAGE_RES", static_cast<int32_t>(StageRes::STAGE_FAIL),
646            "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_END),
647            "CH_ID", channelId,
648            "LOCAL_UDID", GetAnonyLocalUdid(),
649            "PEER_UDID", GetAnonyUdid(peerUdid),
650            "TO_CALL_PKG", SOFTBUSNAME,
651            "ERROR_CODE", errCode);
652        if (res != DM_OK) {
653            LOGE("ReportDeleteTrustRelation error, res:%{public}d", res);
654            return;
655        }
656    }
657    return;
658}
659
660void DmRadarHelper::ReportDestroyPinHolder(std::string hostName,
661    std::string peerUdid, int32_t errCode, int32_t stageRes)
662{
663    int32_t res = DM_OK;
664    if (stageRes == static_cast<int32_t>(StageRes::STAGE_SUCC)) {
665        res = HiSysEventWrite(
666            OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
667            DM_AUTHCATION_BEHAVIOR,
668            HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
669            "ORG_PKG", ORGPKGNAME,
670            "HOST_PKG", hostName,
671            "FUNC", "DestroyPinHolder",
672            "API_TYPE", GetApiType(),
673            "BIZ_SCENE", static_cast<int32_t>(AuthScene::DM_PIN_HOLDER),
674            "BIZ_STAGE", static_cast<int32_t>(PinHolderStage::DESTROY_PIN_HOLDER),
675            "STAGE_RES", static_cast<int32_t>(StageRes::STAGE_SUCC),
676            "LOCAL_UDID", GetAnonyLocalUdid(),
677            "PEER_UDID", GetAnonyUdid(peerUdid),
678            "TO_CALL_PKG", SOFTBUSNAME);
679        if (res != DM_OK) {
680            LOGE("ReportDeleteTrustRelation error, res:%{public}d", res);
681            return;
682        }
683    } else {
684        res = HiSysEventWrite(
685            OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
686            DM_AUTHCATION_BEHAVIOR,
687            HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
688            "ORG_PKG", ORGPKGNAME,
689            "HOST_PKG", hostName,
690            "FUNC", "DestroyPinHolder",
691            "API_TYPE", GetApiType(),
692            "BIZ_SCENE", static_cast<int32_t>(AuthScene::DM_PIN_HOLDER),
693            "BIZ_STAGE", static_cast<int32_t>(PinHolderStage::DESTROY_PIN_HOLDER),
694            "STAGE_RES", static_cast<int32_t>(StageRes::STAGE_FAIL),
695            "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_END),
696            "LOCAL_UDID", GetAnonyLocalUdid(),
697            "PEER_UDID", GetAnonyUdid(peerUdid),
698            "TO_CALL_PKG", SOFTBUSNAME,
699            "ERROR_CODE", errCode);
700        if (res != DM_OK) {
701            LOGE("ReportDeleteTrustRelation error, res:%{public}d", res);
702            return;
703        }
704    }
705    return;
706}
707
708void DmRadarHelper::ReportSendOrReceiveHolderMsg(int32_t bizStage, std::string funcName, std::string peerUdid)
709{
710    int32_t res = DM_OK;
711    if (bizStage == static_cast<int32_t>(PinHolderStage::RECEIVE_DESTROY_PIN_HOLDER_MSG)) {
712        res = HiSysEventWrite(
713            OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
714            DM_AUTHCATION_BEHAVIOR,
715            HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
716            "ORG_PKG", ORGPKGNAME,
717            "FUNC", funcName,
718            "BIZ_SCENE", static_cast<int32_t>(AuthScene::DM_PIN_HOLDER),
719            "BIZ_STAGE", bizStage,
720            "STAGE_RES", static_cast<int32_t>(StageRes::STAGE_SUCC),
721            "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_END),
722            "LOCAL_UDID", GetAnonyLocalUdid(),
723            "PEER_UDID", GetAnonyUdid(peerUdid),
724            "TO_CALL_PKG", SOFTBUSNAME);
725        if (res != DM_OK) {
726            LOGE("ReportSendOrReceiveHolderMsg error, res:%{public}d", res);
727            return;
728        }
729    } else {
730        res = HiSysEventWrite(
731            OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
732            DM_AUTHCATION_BEHAVIOR,
733            HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
734            "ORG_PKG", ORGPKGNAME,
735            "FUNC", funcName,
736            "BIZ_SCENE", static_cast<int32_t>(AuthScene::DM_PIN_HOLDER),
737            "BIZ_STAGE", bizStage,
738            "STAGE_RES", static_cast<int32_t>(StageRes::STAGE_SUCC),
739            "LOCAL_UDID", GetAnonyLocalUdid(),
740            "PEER_UDID", GetAnonyUdid(peerUdid),
741            "TO_CALL_PKG", SOFTBUSNAME);
742        if (res != DM_OK) {
743            LOGE("ReportSendOrReceiveHolderMsg error, res:%{public}d", res);
744            return;
745        }
746    }
747    return;
748}
749
750void DmRadarHelper::ReportGetTrustDeviceList(std::string hostName,
751    std::string funcName, std::vector<DmDeviceInfo> &deviceInfoList, int32_t errCode)
752{
753    int32_t res = DM_OK;
754    std::string discoverDevList = GetDeviceInfoList(deviceInfoList);
755    if (errCode == DM_OK) {
756        int32_t deviceCount = static_cast<int32_t>(deviceInfoList.size());
757        static std::string TrustCallerName = "";
758        if (deviceCount > 0 && TrustCallerName != hostName) {
759            TrustCallerName = hostName;
760            res = HiSysEventWrite(
761                OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
762                DM_DISCOVER_BEHAVIOR,
763                HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
764                "ORG_PKG", ORGPKGNAME,
765                "HOST_PKG", hostName,
766                "FUNC", funcName,
767                "API_TYPE", GetApiType(),
768                "BIZ_SCENE", static_cast<int32_t>(DiscoverScene::DM_GET_TRUST_DEVICE_LIST),
769                "BIZ_STAGE", static_cast<int32_t>(GetTrustDeviceList::GET_TRUST_DEVICE_LIST),
770                "STAGE_RES", static_cast<int32_t>(StageRes::STAGE_SUCC),
771                "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_END),
772                "LOCAL_UDID", GetAnonyLocalUdid(),
773                "DISCOVERY_DEVICE_LIST", discoverDevList);
774        }
775    } else {
776        res = HiSysEventWrite(
777            OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
778            DM_DISCOVER_BEHAVIOR,
779            HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
780            "ORG_PKG", ORGPKGNAME,
781            "HOST_PKG", hostName,
782            "FUNC", funcName,
783            "API_TYPE", GetApiType(),
784            "BIZ_SCENE", static_cast<int32_t>(DiscoverScene::DM_GET_TRUST_DEVICE_LIST),
785            "BIZ_STAGE", static_cast<int32_t>(GetTrustDeviceList::GET_TRUST_DEVICE_LIST),
786            "STAGE_RES", static_cast<int32_t>(StageRes::STAGE_FAIL),
787            "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_END),
788            "LOCAL_UDID", GetAnonyLocalUdid(),
789            "DISCOVERY_DEVICE_LIST", discoverDevList,
790            "ERROR_CODE", GetErrCode(errCode));
791    }
792    if (res != DM_OK) {
793        LOGE("ReportGetTrustDeviceList error, res:%{public}d", res);
794        return;
795    }
796}
797
798void DmRadarHelper::ReportDmBehavior(std::string hostName, std::string funcName, int32_t errCode)
799{
800    int32_t res = DM_OK;
801    if (errCode == DM_OK) {
802        res = HiSysEventWrite(
803            OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
804            DM_DISCOVER_BEHAVIOR,
805            HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
806            "ORG_PKG", ORGPKGNAME,
807            "HOST_PKG", hostName,
808            "FUNC", funcName,
809            "API_TYPE", GetApiType(),
810            "BIZ_SCENE", static_cast<int32_t>(DiscoverScene::DM_BEHAVIOR),
811            "BIZ_STAGE", DEFAULT_STAGE,
812            "STAGE_RES", static_cast<int32_t>(StageRes::STAGE_SUCC),
813            "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_END),
814            "LOCAL_UDID", GetAnonyLocalUdid());
815    } else {
816        res = HiSysEventWrite(
817            OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
818            DM_DISCOVER_BEHAVIOR,
819            HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
820            "ORG_PKG", ORGPKGNAME,
821            "HOST_PKG", hostName,
822            "FUNC", funcName,
823            "API_TYPE", GetApiType(),
824            "BIZ_SCENE", static_cast<int32_t>(DiscoverScene::DM_BEHAVIOR),
825            "BIZ_STAGE", DEFAULT_STAGE,
826            "STAGE_RES", static_cast<int32_t>(StageRes::STAGE_FAIL),
827            "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_END),
828            "LOCAL_UDID", GetAnonyLocalUdid(),
829            "ERROR_CODE", GetErrCode(errCode));
830    }
831    if (res != DM_OK) {
832        LOGE("ReportDmBehavior error, res:%{public}d", res);
833        return;
834    }
835}
836
837void DmRadarHelper::ReportGetLocalDevInfo(std::string hostName,
838    std::string funcName, DmDeviceInfo &info, int32_t errCode)
839{
840    int32_t res = DM_OK;
841    static std::string localCallerName = "";
842    if (localCallerName != hostName) {
843        localCallerName = hostName;
844        if (errCode == DM_OK) {
845            res = HiSysEventWrite(
846                OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
847                DM_DISCOVER_BEHAVIOR,
848                HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
849                "ORG_PKG", ORGPKGNAME,
850                "HOST_PKG", hostName,
851                "FUNC", funcName,
852                "API_TYPE", GetApiType(),
853                "BIZ_SCENE", static_cast<int32_t>(DiscoverScene::DM_GET_LOCAL_DEVICE_INFO),
854                "BIZ_STAGE", DEFAULT_STAGE,
855                "STAGE_RES", static_cast<int32_t>(StageRes::STAGE_SUCC),
856                "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_END),
857                "DEV_TYPE", ConvertHexToString(info.deviceTypeId),
858                "LOCAL_UDID", GetAnonyLocalUdid(),
859                "LOCAL_NET_ID", GetAnonyUdid(info.networkId));
860        } else {
861            res = HiSysEventWrite(
862                OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
863                DM_DISCOVER_BEHAVIOR,
864                HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
865                "ORG_PKG", ORGPKGNAME,
866                "HOST_PKG", hostName,
867                "FUNC", funcName,
868                "API_TYPE", GetApiType(),
869                "BIZ_SCENE", static_cast<int32_t>(DiscoverScene::DM_GET_LOCAL_DEVICE_INFO),
870                "BIZ_STAGE", DEFAULT_STAGE,
871                "STAGE_RES", static_cast<int32_t>(StageRes::STAGE_FAIL),
872                "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_END),
873                "DEV_TYPE", ConvertHexToString(info.deviceTypeId),
874                "LOCAL_UDID", GetAnonyLocalUdid(),
875                "LOCAL_NET_ID", GetAnonyUdid(info.networkId),
876                "ERROR_CODE", GetErrCode(errCode));
877        }
878    }
879    if (res != DM_OK) {
880        LOGE("ReportGetLocalDevInfo error, res:%{public}d", res);
881        return;
882    }
883}
884
885void DmRadarHelper::ReportGetDeviceInfo(std::string hostName,
886    std::string funcName, DmDeviceInfo &info, int32_t errCode)
887{
888    int32_t res = DM_OK;
889    static std::string callerName = "";
890    if (callerName != hostName) {
891        callerName = hostName;
892        if (errCode == DM_OK) {
893            res = HiSysEventWrite(
894                OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
895                DM_DISCOVER_BEHAVIOR,
896                HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
897                "ORG_PKG", ORGPKGNAME,
898                "HOST_PKG", hostName,
899                "FUNC", funcName,
900                "API_TYPE", GetApiType(),
901                "BIZ_SCENE", static_cast<int32_t>(DiscoverScene::DM_GET_DEVICE_INFO),
902                "BIZ_STAGE", DEFAULT_STAGE,
903                "STAGE_RES", static_cast<int32_t>(StageRes::STAGE_SUCC),
904                "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_END),
905                "LOCAL_UDID", GetAnonyLocalUdid(),
906                "DEV_TYPE", ConvertHexToString(info.deviceTypeId),
907                "PEER_UDID", GetAnonyUdid(info.deviceId),
908                "PEER_NET_ID", GetAnonyUdid(info.networkId));
909        } else {
910            res = HiSysEventWrite(
911                OHOS::HiviewDFX::HiSysEvent::Domain::DISTRIBUTED_DEVICE_MANAGER,
912                DM_DISCOVER_BEHAVIOR,
913                HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
914                "ORG_PKG", ORGPKGNAME,
915                "HOST_PKG", hostName,
916                "FUNC", funcName,
917                "API_TYPE", GetApiType(),
918                "BIZ_SCENE", static_cast<int32_t>(DiscoverScene::DM_GET_DEVICE_INFO),
919                "BIZ_STAGE", DEFAULT_STAGE,
920                "STAGE_RES", static_cast<int32_t>(StageRes::STAGE_FAIL),
921                "BIZ_STATE", static_cast<int32_t>(BizState::BIZ_STATE_END),
922                "LOCAL_UDID", GetAnonyLocalUdid(),
923                "DEV_TYPE", ConvertHexToString(info.deviceTypeId),
924                "PEER_UDID", GetAnonyUdid(info.deviceId),
925                "PEER_NET_ID", GetAnonyUdid(info.networkId),
926                "ERROR_CODE", GetErrCode(errCode));
927        }
928    }
929    if (res != DM_OK) {
930        LOGE("ReportGetDeviceInfo error, res:%{public}d", res);
931        return;
932    }
933}
934
935std::string DmRadarHelper::ConvertHexToString(uint16_t hex)
936{
937    std::stringstream str;
938    int32_t with = 3;
939    str << std::hex << std::setw(with) << std::setfill('0') << hex;
940    std::string hexStr = str.str();
941    transform(hexStr.begin(), hexStr.end(), hexStr.begin(), ::toupper);
942    return hexStr;
943}
944
945std::string DmRadarHelper::GetDeviceInfoList(std::vector<DmDeviceInfo> &deviceInfoList)
946{
947    cJSON *deviceInfoJson = cJSON_CreateArray();
948    if (deviceInfoJson == nullptr) {
949        LOGE("deviceInfoJson is nullptr.");
950        return "";
951    }
952    for (size_t i = 0; i < deviceInfoList.size(); i++) {
953        cJSON *object = cJSON_CreateObject();
954        if (object == nullptr) {
955            LOGE("object is nullptr.");
956            cJSON_Delete(deviceInfoJson);
957            return "";
958        }
959        std::string devType = ConvertHexToString(deviceInfoList[i].deviceTypeId);
960        cJSON_AddStringToObject(object, "PEER_DEV_TYPE", devType.c_str());
961        cJSON_AddItemToArray(deviceInfoJson, object);
962    }
963    char *deviceInfoStr = cJSON_PrintUnformatted(deviceInfoJson);
964    if (deviceInfoStr == nullptr) {
965        LOGE("deviceInfoStr is nullptr.");
966        cJSON_Delete(deviceInfoJson);
967        return "";
968    }
969    std::string devInfoStr = std::string(deviceInfoStr);
970    cJSON_Delete(deviceInfoJson);
971    cJSON_free(deviceInfoStr);
972    return devInfoStr;
973}
974
975std::string DmRadarHelper::GetAnonyUdid(std::string udid)
976{
977    if (udid.empty() || udid.length() < INVALID_UDID_LENGTH) {
978        return "unknown";
979    }
980    return udid.substr(0, SUBSTR_UDID_LENGTH) + "**" + udid.substr(udid.length() - SUBSTR_UDID_LENGTH);
981}
982
983std::string DmRadarHelper::GetAnonyLocalUdid()
984{
985    char localDeviceId[DEVICE_UUID_LENGTH] = {0};
986    GetDevUdid(localDeviceId, DEVICE_UUID_LENGTH);
987    return GetAnonyUdid(std::string(localDeviceId));
988}
989
990int32_t DmRadarHelper::GetErrCode(int32_t errCode)
991{
992    auto flag = MAP_ERROR_CODE.find(errCode);
993    if (flag == MAP_ERROR_CODE.end()) {
994        return errCode;
995    }
996    return flag->second;
997}
998
999int32_t DmRadarHelper::GetApiType()
1000{
1001    AccessTokenID tokenCaller = IPCSkeleton::GetCallingTokenID();
1002    if (tokenCaller == 0) {
1003        LOGE("GetApiType GetCallingTokenID error.");
1004        return static_cast<int32_t>(ApiType::API_UNKNOW);
1005    }
1006    ATokenTypeEnum tokenTypeFlag = AccessTokenKit::GetTokenTypeFlag(tokenCaller);
1007    if (tokenTypeFlag == ATokenTypeEnum::TOKEN_HAP) {
1008        return static_cast<int32_t>(ApiType::API_JS);
1009    } else if (tokenTypeFlag == ATokenTypeEnum::TOKEN_NATIVE) {
1010        return static_cast<int32_t>(ApiType::API_NATIVE);
1011    }
1012    return static_cast<int32_t>(ApiType::API_UNKNOW);
1013}
1014
1015IDmRadarHelper *CreateDmRadarInstance()
1016{
1017    return &DmRadarHelper::GetInstance();
1018}
1019} // namespace DistributedHardware
1020} // namespace OHOS