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