1 /*
2 * Copyright (C) 2023 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 #include "nfc_hisysevent.h"
16 #include "hisysevent.h"
17 #include "loghelper.h"
18 #include "taginfo.h"
19
20 namespace OHOS {
21 namespace NFC {
22 template<typename... Types>
WriteEvent(const std::string & eventType,HiviewDFX::HiSysEvent::EventType type,Types...args)23 static void WriteEvent(const std::string& eventType, HiviewDFX::HiSysEvent::EventType type, Types... args)
24 {
25 int ret = HiSysEventWrite(HiviewDFX::HiSysEvent::Domain::NFC, eventType, type, args...);
26 if (ret != 0) {
27 ErrorLog("Write event fail: %{public}s", eventType.c_str());
28 }
29 }
30
WriteNfcFailedHiSysEvent(const NfcFailedParams * failedParams)31 void NfcHisysEvent::WriteNfcFailedHiSysEvent(const NfcFailedParams* failedParams)
32 {
33 WriteEvent("OPERATION_FAILED", HiviewDFX::HiSysEvent::EventType::FAULT,
34 "MAIN_ERROR_CODE", static_cast<int>(failedParams->mainErrorCode),
35 "SUB_ERROR_CODE", static_cast<int>(failedParams->subErrorCode),
36 "CURRENT_DEFAULT_ROUTE", failedParams->defaultRoute,
37 "CURRENT_SCREEN_STATE", failedParams->screenState,
38 "CURRENT_NFC_STATE", failedParams->nfcState,
39 "CURRENT_PASSIVE_LISTEN_STATE", failedParams->passiveListenState,
40 "CURRENT_FIRMWARE_VERSION", failedParams->version,
41 "APP_PACKAGE_NAME", failedParams->appPackageName);
42 }
43
WriteOpenAndCloseHiSysEvent(int openRequestCnt,int openFailCnt,int closeRequestCnt,int closeFailCnt)44 void NfcHisysEvent::WriteOpenAndCloseHiSysEvent(int openRequestCnt, int openFailCnt,
45 int closeRequestCnt, int closeFailCnt)
46 {
47 WriteEvent("OPEN_AND_CLOSE", HiviewDFX::HiSysEvent::EventType::STATISTIC,
48 "OPEN_REQUEST_CNT", openRequestCnt,
49 "OPEN_FAILED_CNT", openFailCnt,
50 "CLOSE_REQUEST_CNT", closeRequestCnt,
51 "CLOSE_FAILED_CNT", closeFailCnt);
52 }
53
WriteTagFoundHiSysEvent(const std::vector<int> & techList)54 void NfcHisysEvent::WriteTagFoundHiSysEvent(const std::vector<int>& techList)
55 {
56 int tagFoundCnt = 1;
57 int typeACnt = 0;
58 int typeBCnt = 0;
59 int typeFCnt = 0;
60 int typeVCnt = 0;
61 for (size_t i = 0; i < techList.size(); i++) {
62 std::string discStrTech = KITS::TagInfo::GetStringTech(techList[i]);
63 if (discStrTech.compare("NfcA") == 0) {
64 typeACnt++;
65 } else if (discStrTech.compare("NfcB") == 0) {
66 typeBCnt++;
67 } else if (discStrTech.compare("NfcF") == 0) {
68 typeFCnt++;
69 } else if (discStrTech.compare("NfcV") == 0) {
70 typeVCnt++;
71 }
72 }
73 WriteEvent("TAG_FOUND", HiviewDFX::HiSysEvent::EventType::STATISTIC,
74 "TOTAL_TAG_FOUND_CNT", tagFoundCnt,
75 "TYPE_A_TAG_FOUND", typeACnt,
76 "TYPE_B_TAG_FOUND", typeBCnt,
77 "TYPE_F_TAG_FOUND", typeFCnt,
78 "TYPE_V_TAG_FOUND", typeVCnt);
79 }
80
WritePassiveListenHiSysEvent(int requestCnt,int failCnt)81 void NfcHisysEvent::WritePassiveListenHiSysEvent(int requestCnt, int failCnt)
82 {
83 WriteEvent("PASSIVE_LISTEN", HiviewDFX::HiSysEvent::EventType::STATISTIC,
84 "REQUEST_PASSIVE_LISTEN_CNT", requestCnt,
85 "FAILED_PASSIVE_LISTEN_CNT", failCnt);
86 }
87
WriteFirmwareUpdateHiSysEvent(int requestCnt,int failCnt)88 void NfcHisysEvent::WriteFirmwareUpdateHiSysEvent(int requestCnt, int failCnt)
89 {
90 WriteEvent("FIRMWARE_UPDATE", HiviewDFX::HiSysEvent::EventType::STATISTIC,
91 "REQUEST_FIRMWARE_UPDATE_CNT", requestCnt,
92 "FAILED_FIRMWARE_UPDATE_CNT", failCnt);
93 }
94
BuildFailedParams(NfcFailedParams & nfcFailedParams,MainErrorCode mainErrorCode,SubErrorCode subErrorCode)95 void NfcHisysEvent::BuildFailedParams(NfcFailedParams &nfcFailedParams,
96 MainErrorCode mainErrorCode,
97 SubErrorCode subErrorCode)
98 {
99 nfcFailedParams.mainErrorCode = mainErrorCode;
100 nfcFailedParams.subErrorCode = subErrorCode;
101 nfcFailedParams.defaultRoute = 0;
102 nfcFailedParams.screenState = 0;
103 nfcFailedParams.nfcState = 0;
104 nfcFailedParams.passiveListenState = 0;
105 nfcFailedParams.version = "VERSION";
106 nfcFailedParams.appPackageName = "APPNAME";
107 }
WriteHceSwipeResultHiSysEvent(const std::string & appPackageName,int hceSwipeCnt)108 void NfcHisysEvent::WriteHceSwipeResultHiSysEvent(const std::string &appPackageName, int hceSwipeCnt)
109 {
110 WriteEvent("HCE_SWIPE_RESULT", HiviewDFX::HiSysEvent::EventType::STATISTIC,
111 "HCE_SWIPE_CNT", hceSwipeCnt,
112 "APP_PACKAGE_NAME", appPackageName);
113 }
WriteDefaultPaymentAppChangeHiSysEvent(const std::string & oldAppPackageName,const std::string & newAppPackageName)114 void NfcHisysEvent::WriteDefaultPaymentAppChangeHiSysEvent(const std::string &oldAppPackageName,
115 const std::string &newAppPackageName)
116 {
117 WriteEvent("HCE_DEFAULT_PAYMENT_APP_CHANGE", HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
118 "OLD_APP_PACKAGE_NAME", oldAppPackageName, "NEW_APP_PACKAGE_NAME", newAppPackageName);
119 }
120
WriteForegroundAppChangeHiSysEvent(const std::string & appPackageName)121 void NfcHisysEvent::WriteForegroundAppChangeHiSysEvent(const std::string &appPackageName)
122 {
123 InfoLog("WriteForegroundAppChangeHiSysEvent, appPackageName[%{public}s]", appPackageName.c_str());
124 WriteEvent("HCE_FORGROUND_APP_CHANGE", HiviewDFX::HiSysEvent::EventType::BEHAVIOR, "NEW_APP_PACKAGE_NAME",
125 appPackageName);
126 }
127
WriteDefaultRouteChangeHiSysEvent(int oldRoute,int newRoute)128 void NfcHisysEvent::WriteDefaultRouteChangeHiSysEvent(int oldRoute, int newRoute)
129 {
130 InfoLog("WriteDefaultRouteChangeHiSysEvent, oldRoute[%{public}d], newRoute[%{public}d]", oldRoute, newRoute);
131 WriteEvent("HCE_DEFAULT_ROUTE_CHANGE", HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
132 "OLD_DEFAULT_ROUTE", oldRoute,
133 "NEW_DEFAULT_ROUTE", newRoute);
134 }
135
WriteAppBehaviorHiSysEvent(SubErrorCode behaviorCode,const std::string & appName)136 void NfcHisysEvent::WriteAppBehaviorHiSysEvent(SubErrorCode behaviorCode, const std::string &appName)
137 {
138 NfcFailedParams failedParams;
139 failedParams.mainErrorCode = APP_BEHAVIOR;
140 failedParams.subErrorCode = behaviorCode;
141 failedParams.appPackageName = appName;
142 WriteNfcFailedHiSysEvent(&failedParams);
143 }
144 } // namespace NFC
145 } // namespace OHOS