1e1c44949Sopenharmony_ci/*
2e1c44949Sopenharmony_ci * Copyright (C) 2024 Huawei Device Co., Ltd.
3e1c44949Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4e1c44949Sopenharmony_ci * you may not use this file except in compliance with the License.
5e1c44949Sopenharmony_ci * You may obtain a copy of the License at
6e1c44949Sopenharmony_ci *
7e1c44949Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8e1c44949Sopenharmony_ci *
9e1c44949Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10e1c44949Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11e1c44949Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12e1c44949Sopenharmony_ci * See the License for the specific language governing permissions and
13e1c44949Sopenharmony_ci * limitations under the License.
14e1c44949Sopenharmony_ci */
15e1c44949Sopenharmony_ci
16e1c44949Sopenharmony_ci#include "call_manager_hisysevent.h"
17e1c44949Sopenharmony_ci
18e1c44949Sopenharmony_ci#include "call_manager_errors.h"
19e1c44949Sopenharmony_ci#include "telephony_errors.h"
20e1c44949Sopenharmony_ci#include "telephony_log_wrapper.h"
21e1c44949Sopenharmony_ci
22e1c44949Sopenharmony_cinamespace OHOS {
23e1c44949Sopenharmony_cinamespace Telephony {
24e1c44949Sopenharmony_ci// EVENT
25e1c44949Sopenharmony_cistatic constexpr const char *CALL_DIAL_FAILED_EVENT = "CALL_DIAL_FAILED";
26e1c44949Sopenharmony_cistatic constexpr const char *CALL_INCOMING_FAILED_EVENT = "CALL_INCOMING_FAILED";
27e1c44949Sopenharmony_cistatic constexpr const char *CALL_ANSWER_FAILED_EVENT = "CALL_ANSWER_FAILED";
28e1c44949Sopenharmony_cistatic constexpr const char *CALL_HANGUP_FAILED_EVENT = "CALL_HANGUP_FAILED";
29e1c44949Sopenharmony_cistatic constexpr const char *INCOMING_CALL_EVENT = "INCOMING_CALL";
30e1c44949Sopenharmony_cistatic constexpr const char *CALL_STATE_CHANGED_EVENT = "CALL_STATE";
31e1c44949Sopenharmony_cistatic constexpr const char *CALL_INCOMING_NUM_IDENTITY_EVENT = "CALL_INCOMING_NUM_IDENTITY";
32e1c44949Sopenharmony_ci
33e1c44949Sopenharmony_ci// KEY
34e1c44949Sopenharmony_cistatic constexpr const char *MODULE_NAME_KEY = "MODULE";
35e1c44949Sopenharmony_cistatic constexpr const char *SLOT_ID_KEY = "SLOT_ID";
36e1c44949Sopenharmony_cistatic constexpr const char *INDEX_ID_KEY = "INDEX_ID";
37e1c44949Sopenharmony_cistatic constexpr const char *STATE_KEY = "STATE";
38e1c44949Sopenharmony_cistatic constexpr const char *CALL_ID_KEY = "CALL_ID";
39e1c44949Sopenharmony_cistatic constexpr const char *CALL_TYPE_KEY = "CALL_TYPE";
40e1c44949Sopenharmony_cistatic constexpr const char *VIDEO_STATE_KEY = "VIDEO_STATE";
41e1c44949Sopenharmony_cistatic constexpr const char *ERROR_TYPE_KEY = "ERROR_TYPE";
42e1c44949Sopenharmony_cistatic constexpr const char *ERROR_MSG_KEY = "ERROR_MSG";
43e1c44949Sopenharmony_cistatic constexpr const char *MARK_TYPE_KEY = "MARK_TYPE";
44e1c44949Sopenharmony_cistatic constexpr const char *PNAMEID_KEY = "PNAMEID";
45e1c44949Sopenharmony_cistatic constexpr const char *PVERSIONID_KEY = "PVERSIONID";
46e1c44949Sopenharmony_ci
47e1c44949Sopenharmony_ci// VALUE
48e1c44949Sopenharmony_cistatic constexpr const char *CALL_MANAGER_MODULE = "CALL_MANAGER";
49e1c44949Sopenharmony_cistatic const int32_t CS_CALL_TYPE = 0;
50e1c44949Sopenharmony_cistatic const int32_t IMS_CALL_TYPE = 1;
51e1c44949Sopenharmony_cistatic const int32_t SATELLITE_CALL_TYPE = 5;
52e1c44949Sopenharmony_cistatic const int32_t VOICE_TYPE = 0;
53e1c44949Sopenharmony_cistatic const int32_t VIDEO_TYPE = 1;
54e1c44949Sopenharmony_ci
55e1c44949Sopenharmony_civoid CallManagerHisysevent::WriteCallStateBehaviorEvent(const int32_t slotId, const int32_t state, const int32_t index)
56e1c44949Sopenharmony_ci{
57e1c44949Sopenharmony_ci    HiWriteBehaviorEvent(CALL_STATE_CHANGED_EVENT, SLOT_ID_KEY, slotId, STATE_KEY, state, INDEX_ID_KEY, index);
58e1c44949Sopenharmony_ci}
59e1c44949Sopenharmony_ci
60e1c44949Sopenharmony_civoid CallManagerHisysevent::WriteIncomingCallBehaviorEvent(const int32_t slotId, int32_t callType, int32_t callMode)
61e1c44949Sopenharmony_ci{
62e1c44949Sopenharmony_ci    int32_t type = 0;
63e1c44949Sopenharmony_ci    if (callType == IMS_CALL_TYPE && callMode == VOICE_TYPE) {
64e1c44949Sopenharmony_ci        type = static_cast<int32_t>(IncomingCallType::IMS_VOICE_INCOMING);
65e1c44949Sopenharmony_ci    } else if (callType == IMS_CALL_TYPE && callMode == VIDEO_TYPE) {
66e1c44949Sopenharmony_ci        type = static_cast<int32_t>(IncomingCallType::IMS_VIDEO_INCOMING);
67e1c44949Sopenharmony_ci    } else if ((callType == CS_CALL_TYPE || callType == SATELLITE_CALL_TYPE) && callMode == VOICE_TYPE) {
68e1c44949Sopenharmony_ci        type = static_cast<int32_t>(IncomingCallType::CS_VOICE_INCOMING);
69e1c44949Sopenharmony_ci    } else {
70e1c44949Sopenharmony_ci        TELEPHONY_LOGE("WriteIncomingCallBehaviorEvent call incomming arges is out of range!");
71e1c44949Sopenharmony_ci        return;
72e1c44949Sopenharmony_ci    }
73e1c44949Sopenharmony_ci    HiWriteBehaviorEvent(INCOMING_CALL_EVENT, SLOT_ID_KEY, slotId, CALL_TYPE_KEY, type);
74e1c44949Sopenharmony_ci}
75e1c44949Sopenharmony_ci
76e1c44949Sopenharmony_civoid CallManagerHisysevent::WriteIncomingNumIdentityBehaviorEvent(const int32_t markType)
77e1c44949Sopenharmony_ci{
78e1c44949Sopenharmony_ci    TELEPHONY_LOGI("WriteIncomingNumIdentityBehaviorEvent markType: %{public}d", markType);
79e1c44949Sopenharmony_ci    HiWriteBehaviorEventPhoneUE(CALL_INCOMING_NUM_IDENTITY_EVENT, PNAMEID_KEY, "callmanager", PVERSIONID_KEY, "",
80e1c44949Sopenharmony_ci        MARK_TYPE_KEY, markType);
81e1c44949Sopenharmony_ci}
82e1c44949Sopenharmony_ci
83e1c44949Sopenharmony_civoid CallManagerHisysevent::WriteIncomingCallFaultEvent(const int32_t slotId, const int32_t callType,
84e1c44949Sopenharmony_ci    const int32_t videoState, const int32_t errCode, const std::string &desc)
85e1c44949Sopenharmony_ci{
86e1c44949Sopenharmony_ci    CallErrorCode value = CallErrorCode::CALL_ERROR_NONE;
87e1c44949Sopenharmony_ci    if (ErrorCodeConversion(errCode, value)) {
88e1c44949Sopenharmony_ci        HiWriteFaultEvent(CALL_INCOMING_FAILED_EVENT, MODULE_NAME_KEY, CALL_MANAGER_MODULE, SLOT_ID_KEY, slotId,
89e1c44949Sopenharmony_ci            CALL_TYPE_KEY, callType, VIDEO_STATE_KEY, videoState, ERROR_TYPE_KEY, static_cast<int32_t>(value),
90e1c44949Sopenharmony_ci            ERROR_MSG_KEY, desc);
91e1c44949Sopenharmony_ci    } else {
92e1c44949Sopenharmony_ci        HiWriteFaultEvent(CALL_INCOMING_FAILED_EVENT, MODULE_NAME_KEY, CALL_MANAGER_MODULE, SLOT_ID_KEY, slotId,
93e1c44949Sopenharmony_ci            CALL_TYPE_KEY, callType, VIDEO_STATE_KEY, videoState, ERROR_TYPE_KEY, errCode, ERROR_MSG_KEY, desc);
94e1c44949Sopenharmony_ci    }
95e1c44949Sopenharmony_ci}
96e1c44949Sopenharmony_ci
97e1c44949Sopenharmony_civoid CallManagerHisysevent::WriteDialCallFaultEvent(const int32_t slotId, const int32_t callType,
98e1c44949Sopenharmony_ci    const int32_t videoState, const int32_t errCode, const std::string &desc)
99e1c44949Sopenharmony_ci{
100e1c44949Sopenharmony_ci    CallErrorCode value = CallErrorCode::CALL_ERROR_NONE;
101e1c44949Sopenharmony_ci    if (ErrorCodeConversion(errCode, value)) {
102e1c44949Sopenharmony_ci        HiWriteFaultEvent(CALL_DIAL_FAILED_EVENT, MODULE_NAME_KEY, CALL_MANAGER_MODULE, SLOT_ID_KEY, slotId,
103e1c44949Sopenharmony_ci            CALL_TYPE_KEY, callType, VIDEO_STATE_KEY, videoState, ERROR_TYPE_KEY, static_cast<int32_t>(value),
104e1c44949Sopenharmony_ci            ERROR_MSG_KEY, desc);
105e1c44949Sopenharmony_ci    } else {
106e1c44949Sopenharmony_ci        HiWriteFaultEvent(CALL_DIAL_FAILED_EVENT, MODULE_NAME_KEY, CALL_MANAGER_MODULE, SLOT_ID_KEY, slotId,
107e1c44949Sopenharmony_ci            CALL_TYPE_KEY, callType, VIDEO_STATE_KEY, videoState, ERROR_TYPE_KEY, errCode, ERROR_MSG_KEY, desc);
108e1c44949Sopenharmony_ci    }
109e1c44949Sopenharmony_ci}
110e1c44949Sopenharmony_ci
111e1c44949Sopenharmony_civoid CallManagerHisysevent::WriteAnswerCallFaultEvent(const int32_t slotId, const int32_t callId,
112e1c44949Sopenharmony_ci    const int32_t videoState, const int32_t errCode, const std::string &desc)
113e1c44949Sopenharmony_ci{
114e1c44949Sopenharmony_ci    CallErrorCode value = CallErrorCode::CALL_ERROR_NONE;
115e1c44949Sopenharmony_ci    if (ErrorCodeConversion(errCode, value)) {
116e1c44949Sopenharmony_ci        HiWriteFaultEvent(CALL_ANSWER_FAILED_EVENT, MODULE_NAME_KEY, CALL_MANAGER_MODULE, SLOT_ID_KEY, slotId,
117e1c44949Sopenharmony_ci            CALL_ID_KEY, callId, VIDEO_STATE_KEY, videoState, ERROR_TYPE_KEY, static_cast<int32_t>(value),
118e1c44949Sopenharmony_ci            ERROR_MSG_KEY, desc);
119e1c44949Sopenharmony_ci    } else {
120e1c44949Sopenharmony_ci        HiWriteFaultEvent(CALL_ANSWER_FAILED_EVENT, MODULE_NAME_KEY, CALL_MANAGER_MODULE, SLOT_ID_KEY, slotId,
121e1c44949Sopenharmony_ci            CALL_ID_KEY, callId, VIDEO_STATE_KEY, videoState, ERROR_TYPE_KEY, errCode, ERROR_MSG_KEY, desc);
122e1c44949Sopenharmony_ci    }
123e1c44949Sopenharmony_ci}
124e1c44949Sopenharmony_ci
125e1c44949Sopenharmony_civoid CallManagerHisysevent::WriteHangUpFaultEvent(
126e1c44949Sopenharmony_ci    const int32_t slotId, const int32_t callId, const int32_t errCode, const std::string &desc)
127e1c44949Sopenharmony_ci{
128e1c44949Sopenharmony_ci    CallErrorCode value = CallErrorCode::CALL_ERROR_NONE;
129e1c44949Sopenharmony_ci    if (ErrorCodeConversion(errCode, value)) {
130e1c44949Sopenharmony_ci        HiWriteFaultEvent(CALL_HANGUP_FAILED_EVENT, MODULE_NAME_KEY, CALL_MANAGER_MODULE, SLOT_ID_KEY, slotId,
131e1c44949Sopenharmony_ci            CALL_ID_KEY, callId, ERROR_TYPE_KEY, static_cast<int32_t>(value), ERROR_MSG_KEY, desc);
132e1c44949Sopenharmony_ci    } else {
133e1c44949Sopenharmony_ci        HiWriteFaultEvent(CALL_HANGUP_FAILED_EVENT, MODULE_NAME_KEY, CALL_MANAGER_MODULE, SLOT_ID_KEY, slotId,
134e1c44949Sopenharmony_ci            CALL_ID_KEY, callId, ERROR_TYPE_KEY, errCode, ERROR_MSG_KEY, desc);
135e1c44949Sopenharmony_ci    }
136e1c44949Sopenharmony_ci}
137e1c44949Sopenharmony_ci
138e1c44949Sopenharmony_civoid CallManagerHisysevent::GetErrorDescription(const int32_t errCode, std::string &errordesc)
139e1c44949Sopenharmony_ci{
140e1c44949Sopenharmony_ci    switch (errCode) {
141e1c44949Sopenharmony_ci        case CALL_ERR_PHONE_NUMBER_EMPTY:
142e1c44949Sopenharmony_ci        case CALL_ERR_NUMBER_OUT_OF_RANGE:
143e1c44949Sopenharmony_ci            errordesc = "NumberLegalityCheck failed";
144e1c44949Sopenharmony_ci            break;
145e1c44949Sopenharmony_ci        case CALL_ERR_UNKNOW_DIAL_TYPE:
146e1c44949Sopenharmony_ci        case CALL_ERR_INVALID_SLOT_ID:
147e1c44949Sopenharmony_ci        case CALL_ERR_UNKNOW_CALL_TYPE:
148e1c44949Sopenharmony_ci        case CALL_ERR_INVALID_DIAL_SCENE:
149e1c44949Sopenharmony_ci        case CALL_ERR_INVALID_VIDEO_STATE:
150e1c44949Sopenharmony_ci            errordesc = "DialPolicy failed";
151e1c44949Sopenharmony_ci            break;
152e1c44949Sopenharmony_ci        case TELEPHONY_ERR_LOCAL_PTR_NULL:
153e1c44949Sopenharmony_ci            errordesc = errordesc = "CallRequestHandlerPtr_ or handler_ is nullptr";
154e1c44949Sopenharmony_ci            break;
155e1c44949Sopenharmony_ci        case CALL_ERR_SYSTEM_EVENT_HANDLE_FAILURE:
156e1c44949Sopenharmony_ci            errordesc = "Send HANDLER_DIAL_CALL_REQUEST event failed";
157e1c44949Sopenharmony_ci            break;
158e1c44949Sopenharmony_ci        default:
159e1c44949Sopenharmony_ci            break;
160e1c44949Sopenharmony_ci    }
161e1c44949Sopenharmony_ci}
162e1c44949Sopenharmony_ci
163e1c44949Sopenharmony_ciint32_t CallManagerHisysevent::ErrorCodeConversion(const int32_t errCode, CallErrorCode &eventValue)
164e1c44949Sopenharmony_ci{
165e1c44949Sopenharmony_ci    if (CallDataErrorCodeConversion(errCode, eventValue) || CallInterfaceErrorCodeConversion(errCode, eventValue) ||
166e1c44949Sopenharmony_ci        TelephonyErrorCodeConversion(errCode, eventValue)) {
167e1c44949Sopenharmony_ci        TELEPHONY_LOGI("CallManagerHisysevent::ErrorCodeConversion in %{public}d out %{public}d", errCode, eventValue);
168e1c44949Sopenharmony_ci        return true;
169e1c44949Sopenharmony_ci    }
170e1c44949Sopenharmony_ci    return false;
171e1c44949Sopenharmony_ci}
172e1c44949Sopenharmony_ci
173e1c44949Sopenharmony_ciint32_t CallManagerHisysevent::TelephonyErrorCodeConversion(const int32_t errCode, CallErrorCode &eventValue)
174e1c44949Sopenharmony_ci{
175e1c44949Sopenharmony_ci    switch (errCode) {
176e1c44949Sopenharmony_ci        case static_cast<int32_t>(TELEPHONY_ERR_LOCAL_PTR_NULL):
177e1c44949Sopenharmony_ci            eventValue = CallErrorCode::CALL_ERROR_CALL_LOCAL_PTR_NULL;
178e1c44949Sopenharmony_ci            break;
179e1c44949Sopenharmony_ci        case static_cast<int32_t>(TELEPHONY_ERR_ARGUMENT_INVALID):
180e1c44949Sopenharmony_ci            eventValue = CallErrorCode::CALL_ERROR_ARGUMENT_INVALID;
181e1c44949Sopenharmony_ci            break;
182e1c44949Sopenharmony_ci        case static_cast<int32_t>(TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL):
183e1c44949Sopenharmony_ci            eventValue = CallErrorCode::CALL_ERROR_IPC_CONNECT_STUB_FAIL;
184e1c44949Sopenharmony_ci            break;
185e1c44949Sopenharmony_ci        case static_cast<int32_t>(TELEPHONY_ERR_WRITE_DESCRIPTOR_TOKEN_FAIL):
186e1c44949Sopenharmony_ci            eventValue = CallErrorCode::CALL_ERROR_IPC_WRITE_DESCRIPTOR_TOKEN_FAIL;
187e1c44949Sopenharmony_ci            break;
188e1c44949Sopenharmony_ci        case static_cast<int32_t>(TELEPHONY_ERR_WRITE_DATA_FAIL):
189e1c44949Sopenharmony_ci            eventValue = CallErrorCode::CALL_ERROR_IPC_WRITE_DATA_FAIL;
190e1c44949Sopenharmony_ci            break;
191e1c44949Sopenharmony_ci        case static_cast<int32_t>(TELEPHONY_ERR_PERMISSION_ERR):
192e1c44949Sopenharmony_ci            eventValue = CallErrorCode::CALL_ERROR_PERMISSION_ERR;
193e1c44949Sopenharmony_ci            break;
194e1c44949Sopenharmony_ci        case static_cast<int32_t>(TELEPHONY_ERR_MEMSET_FAIL):
195e1c44949Sopenharmony_ci            eventValue = CallErrorCode::CALL_ERROR_MEMSET_FAIL;
196e1c44949Sopenharmony_ci            break;
197e1c44949Sopenharmony_ci        case static_cast<int32_t>(TELEPHONY_ERR_MEMCPY_FAIL):
198e1c44949Sopenharmony_ci            eventValue = CallErrorCode::CALL_ERROR_MEMCPY_FAIL;
199e1c44949Sopenharmony_ci            break;
200e1c44949Sopenharmony_ci        default:
201e1c44949Sopenharmony_ci            return false;
202e1c44949Sopenharmony_ci    }
203e1c44949Sopenharmony_ci
204e1c44949Sopenharmony_ci    return true;
205e1c44949Sopenharmony_ci}
206e1c44949Sopenharmony_ci
207e1c44949Sopenharmony_ciint32_t CallManagerHisysevent::CallDataErrorCodeConversion(const int32_t errCode, CallErrorCode &eventValue)
208e1c44949Sopenharmony_ci{
209e1c44949Sopenharmony_ci    switch (errCode) {
210e1c44949Sopenharmony_ci        case static_cast<int32_t>(CALL_ERR_INVALID_SLOT_ID):
211e1c44949Sopenharmony_ci            eventValue = CallErrorCode::CALL_ERROR_INVALID_SLOT_ID;
212e1c44949Sopenharmony_ci            break;
213e1c44949Sopenharmony_ci        case static_cast<int32_t>(CALL_ERR_INVALID_CALLID):
214e1c44949Sopenharmony_ci            eventValue = CallErrorCode::CALL_ERROR_INVALID_CALLID;
215e1c44949Sopenharmony_ci            break;
216e1c44949Sopenharmony_ci        case static_cast<int32_t>(CALL_ERR_PHONE_NUMBER_EMPTY):
217e1c44949Sopenharmony_ci            eventValue = CallErrorCode::CALL_ERROR_PHONE_NUMBER_EMPTY;
218e1c44949Sopenharmony_ci            break;
219e1c44949Sopenharmony_ci        case static_cast<int32_t>(CALL_ERR_NUMBER_OUT_OF_RANGE):
220e1c44949Sopenharmony_ci            eventValue = CallErrorCode::CALL_ERROR_NUMBER_OUT_OF_RANGE;
221e1c44949Sopenharmony_ci            break;
222e1c44949Sopenharmony_ci        case static_cast<int32_t>(CALL_ERR_UNSUPPORTED_NETWORK_TYPE):
223e1c44949Sopenharmony_ci            eventValue = CallErrorCode::CALL_ERROR_UNSUPPORTED_NETWORK_TYPE;
224e1c44949Sopenharmony_ci            break;
225e1c44949Sopenharmony_ci        case static_cast<int32_t>(CALL_ERR_INVALID_DIAL_SCENE):
226e1c44949Sopenharmony_ci            eventValue = CallErrorCode::CALL_ERROR_INVALID_DIAL_SCENE;
227e1c44949Sopenharmony_ci            break;
228e1c44949Sopenharmony_ci        case static_cast<int32_t>(CALL_ERR_INVALID_VIDEO_STATE):
229e1c44949Sopenharmony_ci            eventValue = CallErrorCode::CALL_ERROR_INVALID_VIDEO_STATE;
230e1c44949Sopenharmony_ci            break;
231e1c44949Sopenharmony_ci        case static_cast<int32_t>(CALL_ERR_UNKNOW_DIAL_TYPE):
232e1c44949Sopenharmony_ci            eventValue = CallErrorCode::CALL_ERROR_UNKNOW_DIAL_TYPE;
233e1c44949Sopenharmony_ci            break;
234e1c44949Sopenharmony_ci        case static_cast<int32_t>(CALL_ERR_UNKNOW_CALL_TYPE):
235e1c44949Sopenharmony_ci            eventValue = CallErrorCode::CALL_ERROR_UNKNOW_CALL_TYPE;
236e1c44949Sopenharmony_ci            break;
237e1c44949Sopenharmony_ci        case static_cast<int32_t>(CALL_ERR_CALL_OBJECT_IS_NULL):
238e1c44949Sopenharmony_ci            eventValue = CallErrorCode::CALL_ERROR_CALL_OBJECT_IS_NULL;
239e1c44949Sopenharmony_ci            break;
240e1c44949Sopenharmony_ci        default:
241e1c44949Sopenharmony_ci            return false;
242e1c44949Sopenharmony_ci    }
243e1c44949Sopenharmony_ci    return true;
244e1c44949Sopenharmony_ci}
245e1c44949Sopenharmony_ci
246e1c44949Sopenharmony_ciint32_t CallManagerHisysevent::CallInterfaceErrorCodeConversion(const int32_t errCode, CallErrorCode &eventValue)
247e1c44949Sopenharmony_ci{
248e1c44949Sopenharmony_ci    switch (errCode) {
249e1c44949Sopenharmony_ci        case static_cast<int32_t>(CALL_ERR_DIAL_IS_BUSY):
250e1c44949Sopenharmony_ci            eventValue = CallErrorCode::CALL_ERROR_DIAL_IS_BUSY;
251e1c44949Sopenharmony_ci            break;
252e1c44949Sopenharmony_ci        case static_cast<int32_t>(CALL_ERR_ILLEGAL_CALL_OPERATION):
253e1c44949Sopenharmony_ci            eventValue = CallErrorCode::CALL_ERROR_ILLEGAL_CALL_OPERATION;
254e1c44949Sopenharmony_ci            break;
255e1c44949Sopenharmony_ci        case static_cast<int32_t>(CALL_ERR_PHONE_CALLSTATE_NOTIFY_FAILED):
256e1c44949Sopenharmony_ci            eventValue = CallErrorCode::CALL_ERROR_PHONE_CALLSTATE_NOTIFY_FAILED;
257e1c44949Sopenharmony_ci            break;
258e1c44949Sopenharmony_ci        case static_cast<int32_t>(CALL_ERR_SYSTEM_EVENT_HANDLE_FAILURE):
259e1c44949Sopenharmony_ci            eventValue = CallErrorCode::CALL_ERROR_SYSTEM_EVENT_HANDLE_FAILURE;
260e1c44949Sopenharmony_ci            break;
261e1c44949Sopenharmony_ci        case static_cast<int32_t>(CALL_ERR_CALL_COUNTS_EXCEED_LIMIT):
262e1c44949Sopenharmony_ci            eventValue = CallErrorCode::CALL_ERROR_CALL_COUNTS_EXCEED_LIMIT;
263e1c44949Sopenharmony_ci            break;
264e1c44949Sopenharmony_ci        case static_cast<int32_t>(CALL_ERR_GET_RADIO_STATE_FAILED):
265e1c44949Sopenharmony_ci            eventValue = CallErrorCode::CALL_ERROR_GET_RADIO_STATE_FAILED;
266e1c44949Sopenharmony_ci            break;
267e1c44949Sopenharmony_ci        default:
268e1c44949Sopenharmony_ci            return false;
269e1c44949Sopenharmony_ci    }
270e1c44949Sopenharmony_ci
271e1c44949Sopenharmony_ci    return true;
272e1c44949Sopenharmony_ci}
273e1c44949Sopenharmony_ci
274e1c44949Sopenharmony_civoid CallManagerHisysevent::SetDialStartTime()
275e1c44949Sopenharmony_ci{
276e1c44949Sopenharmony_ci    dialStartTime_ =
277e1c44949Sopenharmony_ci        std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch())
278e1c44949Sopenharmony_ci            .count();
279e1c44949Sopenharmony_ci}
280e1c44949Sopenharmony_ci
281e1c44949Sopenharmony_civoid CallManagerHisysevent::SetIncomingStartTime()
282e1c44949Sopenharmony_ci{
283e1c44949Sopenharmony_ci    incomingStartTime_ =
284e1c44949Sopenharmony_ci        std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch())
285e1c44949Sopenharmony_ci            .count();
286e1c44949Sopenharmony_ci}
287e1c44949Sopenharmony_ci
288e1c44949Sopenharmony_civoid CallManagerHisysevent::SetAnswerStartTime()
289e1c44949Sopenharmony_ci{
290e1c44949Sopenharmony_ci    answerStartTime_ =
291e1c44949Sopenharmony_ci        std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch())
292e1c44949Sopenharmony_ci            .count();
293e1c44949Sopenharmony_ci}
294e1c44949Sopenharmony_ci
295e1c44949Sopenharmony_civoid CallManagerHisysevent::JudgingDialTimeOut(const int32_t slotId, const int32_t callType, const int32_t videoState)
296e1c44949Sopenharmony_ci{
297e1c44949Sopenharmony_ci    int64_t dialEndTime =
298e1c44949Sopenharmony_ci        std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch())
299e1c44949Sopenharmony_ci            .count();
300e1c44949Sopenharmony_ci    if (dialEndTime - dialStartTime_ > NORMAL_DIAL_TIME) {
301e1c44949Sopenharmony_ci        WriteDialCallFaultEvent(slotId, callType, videoState,
302e1c44949Sopenharmony_ci            static_cast<int32_t>(CallErrorCode::CALL_ERROR_DIAL_TIME_OUT),
303e1c44949Sopenharmony_ci            "dial time out " + std::to_string(dialEndTime - dialStartTime_));
304e1c44949Sopenharmony_ci    }
305e1c44949Sopenharmony_ci}
306e1c44949Sopenharmony_ci
307e1c44949Sopenharmony_civoid CallManagerHisysevent::JudgingIncomingTimeOut(
308e1c44949Sopenharmony_ci    const int32_t slotId, const int32_t callType, const int32_t videoState)
309e1c44949Sopenharmony_ci{
310e1c44949Sopenharmony_ci    int64_t incomingEndTime =
311e1c44949Sopenharmony_ci        std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch())
312e1c44949Sopenharmony_ci            .count();
313e1c44949Sopenharmony_ci    if (incomingEndTime - incomingStartTime_ > NORMAL_INCOMING_TIME) {
314e1c44949Sopenharmony_ci        WriteIncomingCallFaultEvent(slotId, callType, videoState,
315e1c44949Sopenharmony_ci            static_cast<int32_t>(CallErrorCode::CALL_ERROR_INCOMING_TIME_OUT),
316e1c44949Sopenharmony_ci            "incoming time out " + std::to_string(incomingEndTime - incomingStartTime_));
317e1c44949Sopenharmony_ci    }
318e1c44949Sopenharmony_ci}
319e1c44949Sopenharmony_ci
320e1c44949Sopenharmony_civoid CallManagerHisysevent::JudgingAnswerTimeOut(const int32_t slotId, const int32_t callId, const int32_t videoState)
321e1c44949Sopenharmony_ci{
322e1c44949Sopenharmony_ci    int64_t answerEndTime =
323e1c44949Sopenharmony_ci        std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch())
324e1c44949Sopenharmony_ci            .count();
325e1c44949Sopenharmony_ci    if (answerEndTime - answerStartTime_ > NORMAL_ANSWER_TIME) {
326e1c44949Sopenharmony_ci        WriteAnswerCallFaultEvent(slotId, callId, videoState,
327e1c44949Sopenharmony_ci            static_cast<int32_t>(CallErrorCode::CALL_ERROR_ANSWER_TIME_OUT),
328e1c44949Sopenharmony_ci            "answer time out " + std::to_string(answerEndTime - answerStartTime_));
329e1c44949Sopenharmony_ci    }
330e1c44949Sopenharmony_ci}
331e1c44949Sopenharmony_ci} // namespace Telephony
332e1c44949Sopenharmony_ci} // namespace OHOS
333