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