12d43be4eSopenharmony_ci/* 22d43be4eSopenharmony_ci * Copyright (C) 2022 Huawei Device Co., Ltd. 32d43be4eSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 42d43be4eSopenharmony_ci * you may not use this file except in compliance with the License. 52d43be4eSopenharmony_ci * You may obtain a copy of the License at 62d43be4eSopenharmony_ci * 72d43be4eSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 82d43be4eSopenharmony_ci * 92d43be4eSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 102d43be4eSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 112d43be4eSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 122d43be4eSopenharmony_ci * See the License for the specific language governing permissions and 132d43be4eSopenharmony_ci * limitations under the License. 142d43be4eSopenharmony_ci */ 152d43be4eSopenharmony_ci 162d43be4eSopenharmony_ci#include "cellular_data_hisysevent.h" 172d43be4eSopenharmony_ci 182d43be4eSopenharmony_ci#include "chrono" 192d43be4eSopenharmony_ci#include "string" 202d43be4eSopenharmony_ci#include "type_traits" 212d43be4eSopenharmony_ci#include "apn_manager.h" 222d43be4eSopenharmony_ci#include "cellular_data_net_agent.h" 232d43be4eSopenharmony_ci 242d43be4eSopenharmony_cinamespace OHOS { 252d43be4eSopenharmony_cinamespace Telephony { 262d43be4eSopenharmony_ci// EVENT 272d43be4eSopenharmony_cistatic constexpr const char *DATA_CONNECTION_STATE_EVENT = "DATA_CONNECTION_STATE"; 282d43be4eSopenharmony_cistatic constexpr const char *ROAMING_DATA_CONNECTION_STATE_EVENT = "ROAMING_DATA_CONNECTION_STATE"; 292d43be4eSopenharmony_cistatic constexpr const char *DATA_ACTIVATE_FAILED_EVENT = "DATA_ACTIVATE_FAILED"; 302d43be4eSopenharmony_cistatic constexpr const char *DATA_DEACTIVED_EVENT = "DATA_DEACTIVED"; 312d43be4eSopenharmony_cistatic constexpr const char *CELLULAR_REQUEST_EVENT = "CELLULAR_REQUEST"; 322d43be4eSopenharmony_ci 332d43be4eSopenharmony_ci// KEY 342d43be4eSopenharmony_cistatic constexpr const char *MODULE_NAME_KEY = "MODULE"; 352d43be4eSopenharmony_cistatic constexpr const char *SLOT_ID_KEY = "SLOT_ID"; 362d43be4eSopenharmony_cistatic constexpr const char *SUPPLIER_ID_KEY = "SUPPLIER_ID"; 372d43be4eSopenharmony_cistatic constexpr const char *STATE_KEY = "STATE"; 382d43be4eSopenharmony_cistatic constexpr const char *DATA_SWITCH_KEY = "DATA_SWITCH"; 392d43be4eSopenharmony_cistatic constexpr const char *UPLINK_DATA_KEY = "UPLINK_DATA"; 402d43be4eSopenharmony_cistatic constexpr const char *DOWNLINK_DATA_KEY = "DOWNLINK_DATA"; 412d43be4eSopenharmony_cistatic constexpr const char *DATASTATE_KEY = "DATASTATE"; 422d43be4eSopenharmony_cistatic constexpr const char *ERROR_TYPE_KEY = "ERROR_TYPE"; 432d43be4eSopenharmony_cistatic constexpr const char *ERROR_MSG_KEY = "ERROR_MSG"; 442d43be4eSopenharmony_cistatic constexpr const char *TYPE_KEY = "TYPE"; 452d43be4eSopenharmony_cistatic constexpr const char *APN_TYPE_KEY = "APN_TYPE"; 462d43be4eSopenharmony_cistatic constexpr const char *CALL_UID_KEY = "CALL_UID"; 472d43be4eSopenharmony_cistatic constexpr const char *CALL_PID_KEY = "CALL_PID"; 482d43be4eSopenharmony_cistatic constexpr const char *NAME_KEY = "NAME"; 492d43be4eSopenharmony_cistatic constexpr const char *REQUEST_ID_KEY = "REQUEST_ID"; 502d43be4eSopenharmony_ci 512d43be4eSopenharmony_ci// VALUE 522d43be4eSopenharmony_cistatic constexpr const char *CELLULAR_DATA_MODULE = "CELLULAR_DATA"; 532d43be4eSopenharmony_cistatic constexpr int32_t NUMBER_MINUS_ONE = -1; 542d43be4eSopenharmony_ci 552d43be4eSopenharmony_civoid CellularDataHiSysEvent::WriteDataDeactiveBehaviorEvent(const int32_t slotId, const DataDisconnectCause type, 562d43be4eSopenharmony_ci const std::string &apnType) 572d43be4eSopenharmony_ci{ 582d43be4eSopenharmony_ci int32_t bitMap = ApnManager::FindApnTypeByApnName(apnType); 592d43be4eSopenharmony_ci HiWriteBehaviorEvent(DATA_DEACTIVED_EVENT, SLOT_ID_KEY, slotId, APN_TYPE_KEY, bitMap, 602d43be4eSopenharmony_ci TYPE_KEY, static_cast<int32_t>(type)); 612d43be4eSopenharmony_ci} 622d43be4eSopenharmony_ci 632d43be4eSopenharmony_civoid CellularDataHiSysEvent::WriteDataConnectStateBehaviorEvent(const int32_t slotId, const std::string &apnType, 642d43be4eSopenharmony_ci const uint64_t capability, const int32_t state) 652d43be4eSopenharmony_ci{ 662d43be4eSopenharmony_ci int32_t bitMap = ApnManager::FindApnTypeByApnName(apnType); 672d43be4eSopenharmony_ci CellularDataNetAgent &netAgent = CellularDataNetAgent::GetInstance(); 682d43be4eSopenharmony_ci int32_t supplierId = netAgent.GetSupplierId(slotId, capability); 692d43be4eSopenharmony_ci HiWriteBehaviorEvent(DATA_CONNECTION_STATE_EVENT, SLOT_ID_KEY, slotId, APN_TYPE_KEY, bitMap, 702d43be4eSopenharmony_ci SUPPLIER_ID_KEY, supplierId, STATE_KEY, state); 712d43be4eSopenharmony_ci} 722d43be4eSopenharmony_ci 732d43be4eSopenharmony_civoid CellularDataHiSysEvent::WriteRoamingConnectStateBehaviorEvent(const int32_t state) 742d43be4eSopenharmony_ci{ 752d43be4eSopenharmony_ci HiWriteBehaviorEvent(ROAMING_DATA_CONNECTION_STATE_EVENT, STATE_KEY, state); 762d43be4eSopenharmony_ci} 772d43be4eSopenharmony_ci 782d43be4eSopenharmony_civoid CellularDataHiSysEvent::WriteCellularRequestBehaviorEvent( 792d43be4eSopenharmony_ci const uint32_t uid, const std::string name, const uint64_t type, const int32_t state) 802d43be4eSopenharmony_ci{ 812d43be4eSopenharmony_ci HiWriteBehaviorEvent(CELLULAR_REQUEST_EVENT, CALL_UID_KEY, static_cast<int32_t>(uid), 822d43be4eSopenharmony_ci CALL_PID_KEY, NUMBER_MINUS_ONE, NAME_KEY, name, REQUEST_ID_KEY, NUMBER_MINUS_ONE, 832d43be4eSopenharmony_ci TYPE_KEY, static_cast<int32_t>(type), STATE_KEY, state); 842d43be4eSopenharmony_ci} 852d43be4eSopenharmony_ci 862d43be4eSopenharmony_civoid CellularDataHiSysEvent::WriteDataActivateFaultEvent( 872d43be4eSopenharmony_ci const int32_t slotId, const int32_t switchState, const CellularDataErrorCode errorType, const std::string &errorMsg) 882d43be4eSopenharmony_ci{ 892d43be4eSopenharmony_ci HiWriteFaultEvent(DATA_ACTIVATE_FAILED_EVENT, MODULE_NAME_KEY, CELLULAR_DATA_MODULE, SLOT_ID_KEY, slotId, 902d43be4eSopenharmony_ci DATA_SWITCH_KEY, switchState, UPLINK_DATA_KEY, INVALID_PARAMETER, DOWNLINK_DATA_KEY, INVALID_PARAMETER, 912d43be4eSopenharmony_ci DATASTATE_KEY, INVALID_PARAMETER, ERROR_TYPE_KEY, static_cast<int32_t>(errorType), ERROR_MSG_KEY, errorMsg); 922d43be4eSopenharmony_ci} 932d43be4eSopenharmony_ci 942d43be4eSopenharmony_civoid CellularDataHiSysEvent::SetCellularDataActivateStartTime() 952d43be4eSopenharmony_ci{ 962d43be4eSopenharmony_ci dataActivateStartTime_ = 972d43be4eSopenharmony_ci std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()) 982d43be4eSopenharmony_ci .count(); 992d43be4eSopenharmony_ci} 1002d43be4eSopenharmony_ci 1012d43be4eSopenharmony_civoid CellularDataHiSysEvent::JudgingDataActivateTimeOut(const int32_t slotId, const int32_t switchState) 1022d43be4eSopenharmony_ci{ 1032d43be4eSopenharmony_ci int64_t dataActivateEndTime = 1042d43be4eSopenharmony_ci std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()) 1052d43be4eSopenharmony_ci .count(); 1062d43be4eSopenharmony_ci if (dataActivateEndTime - dataActivateStartTime_ > DATA_ACTIVATE_TIME) { 1072d43be4eSopenharmony_ci WriteDataActivateFaultEvent(slotId, switchState, CellularDataErrorCode::DATA_ERROR_DATA_ACTIVATE_TIME_OUT, 1082d43be4eSopenharmony_ci "data activate time out " + std::to_string(dataActivateEndTime - dataActivateStartTime_)); 1092d43be4eSopenharmony_ci } 1102d43be4eSopenharmony_ci} 1112d43be4eSopenharmony_ci} // namespace Telephony 1122d43be4eSopenharmony_ci} // namespace OHOS 113