1f857971dSopenharmony_ci/* 2f857971dSopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 3f857971dSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4f857971dSopenharmony_ci * you may not use this file except in compliance with the License. 5f857971dSopenharmony_ci * You may obtain a copy of the License at 6f857971dSopenharmony_ci * 7f857971dSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8f857971dSopenharmony_ci * 9f857971dSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10f857971dSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11f857971dSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12f857971dSopenharmony_ci * See the License for the specific language governing permissions and 13f857971dSopenharmony_ci * limitations under the License. 14f857971dSopenharmony_ci */ 15f857971dSopenharmony_ci 16f857971dSopenharmony_ci#include "cooperate_hisysevent.h" 17f857971dSopenharmony_ci 18f857971dSopenharmony_ci#include "fi_log.h" 19f857971dSopenharmony_ci 20f857971dSopenharmony_ci#undef LOG_TAG 21f857971dSopenharmony_ci#define LOG_TAG "CooperateHiSysEvent" 22f857971dSopenharmony_ci 23f857971dSopenharmony_cinamespace OHOS { 24f857971dSopenharmony_cinamespace Msdp { 25f857971dSopenharmony_cinamespace DeviceStatus { 26f857971dSopenharmony_ci 27f857971dSopenharmony_cistd::map<CooperateState, std::string> CooperateDFX::CooperateState_ = { 28f857971dSopenharmony_ci { CooperateState::COOPERATE_STATE_FREE, "STATE_FREE" }, 29f857971dSopenharmony_ci { CooperateState::COOPERATE_STATE_IN, "STATE_IN" }, 30f857971dSopenharmony_ci { CooperateState::COOPERATE_STATE_OUT, "STATE_OUT" }, 31f857971dSopenharmony_ci}; 32f857971dSopenharmony_ci 33f857971dSopenharmony_cistd::map<CooperateType, std::pair<std::string, std::string>> CooperateDFX::serialStr_ = { 34f857971dSopenharmony_ci { CooperateType::ENABLE_SUCC, { "ENABLE_SUCCESS", "Enable cooperate successfully" } }, 35f857971dSopenharmony_ci { CooperateType::ENABLE_FAIL, { "ENABLE_FAILED", "Enable cooperate failed" } }, 36f857971dSopenharmony_ci { CooperateType::DISABLE_SUCC, { "DISABLE_SUCCESS", "Disenable cooperate successfully" } }, 37f857971dSopenharmony_ci { CooperateType::DISABLE_FAIL, { "DISABLE_FAILED", "Disenable cooperate failed" } }, 38f857971dSopenharmony_ci { CooperateType::LOCAL_ACTIVATE_SUCC, { "LOCAL_ACTIVATE_SUCCESS", "Local start cooperate successfully" } }, 39f857971dSopenharmony_ci { CooperateType::LOCAL_ACTIVATE_FAIL, { "LOCAL_ACTIVATEE_FAILED", "Local start cooperate failed" } }, 40f857971dSopenharmony_ci { CooperateType::REMOTE_ACTIVATE_SUCC, { "REMOTE_ACTIVATE_SUCCESS", "Remote start cooperate successfully" } }, 41f857971dSopenharmony_ci { CooperateType::REMOTE_ACTIVATE_FAIL, { "REMOTE_ACTIVATE_FAILED", "Remote start cooperate failed" } }, 42f857971dSopenharmony_ci { CooperateType::LOCAL_DEACTIVATE_SUCC, { "LOCAL_DEACTIVATE_SUCCESS", "Local stop cooperate successfully" } }, 43f857971dSopenharmony_ci { CooperateType::LOCAL_DEACTIVATE_FAIL, { "LOCAL_DEACTIVATE_FAILED", "Local stop cooperate failed" } }, 44f857971dSopenharmony_ci { CooperateType::REMOTE_DEACTIVATE_SUCC, { "REMOTE_DEACTIVATE_SUCCESS", "Remote stop cooperate successfully" } }, 45f857971dSopenharmony_ci { CooperateType::REMOTE_DEACTIVATE_FAIL, { "REMOTE_DEACTIVATE_FAILED", "Remote stop cooperate failed" } }, 46f857971dSopenharmony_ci { CooperateType::OPENSESSION_SUCC, { "OPENSESSION_SUCCESS", "Open session successfully" } }, 47f857971dSopenharmony_ci { CooperateType::OPENSESSION_FAIL, { "OPENSESSION_FAILED", "Open session failed" } }, 48f857971dSopenharmony_ci { CooperateType::UPDATESTATE_SUCC, { "UPDATESTATE_SUCCESS", "Update cooperatestate successfully" } }, 49f857971dSopenharmony_ci { CooperateType::START_SUCC, { "START_SUCCESS", "Start client successfully" } }, 50f857971dSopenharmony_ci { CooperateType::START_FAIL, { "START_FAILED", "Start client failed" } }, 51f857971dSopenharmony_ci { CooperateType::STOP_SUCC, { "STOP_SUCCESS", "Stop client successfully" } }, 52f857971dSopenharmony_ci { CooperateType::STOP_FAIL, { "STOP_FAILED", "Stop client failed" } }, 53f857971dSopenharmony_ci}; 54f857971dSopenharmony_ci 55f857971dSopenharmony_ci 56f857971dSopenharmony_citemplate<typename... Types> 57f857971dSopenharmony_ciint32_t CooperateDFX::WriteInputFunc(const CooperateType &cooperateType, 58f857971dSopenharmony_ci OHOS::HiviewDFX::HiSysEvent::EventType eventType, Types... paras) 59f857971dSopenharmony_ci{ 60f857971dSopenharmony_ci if (serialStr_.find(cooperateType) == serialStr_.end()) { 61f857971dSopenharmony_ci FI_HILOGE("serialStr_ can't find the cooperate hisysevent type"); 62f857971dSopenharmony_ci return RET_ERR; 63f857971dSopenharmony_ci } 64f857971dSopenharmony_ci auto &[label, dec] = serialStr_[cooperateType]; 65f857971dSopenharmony_ci int32_t ret = HiSysEventWrite( 66f857971dSopenharmony_ci OHOS::HiviewDFX::HiSysEvent::Domain::MSDP, 67f857971dSopenharmony_ci label, 68f857971dSopenharmony_ci eventType, 69f857971dSopenharmony_ci paras..., 70f857971dSopenharmony_ci "MSG", 71f857971dSopenharmony_ci dec); 72f857971dSopenharmony_ci if (ret != RET_OK) { 73f857971dSopenharmony_ci FI_HILOGE("HiviewDFX write failed, ret:%{public}d", ret); 74f857971dSopenharmony_ci } 75f857971dSopenharmony_ci return ret; 76f857971dSopenharmony_ci} 77f857971dSopenharmony_ci 78f857971dSopenharmony_ciint32_t CooperateDFX::WriteEnable(OHOS::HiviewDFX::HiSysEvent::EventType type) 79f857971dSopenharmony_ci{ 80f857971dSopenharmony_ci if (type == OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR) { 81f857971dSopenharmony_ci return WriteInputFunc(CooperateType::ENABLE_SUCC, type); 82f857971dSopenharmony_ci } 83f857971dSopenharmony_ci return WriteInputFunc(CooperateType::ENABLE_FAIL, type); 84f857971dSopenharmony_ci} 85f857971dSopenharmony_ci 86f857971dSopenharmony_ciint32_t CooperateDFX::WriteDisable(OHOS::HiviewDFX::HiSysEvent::EventType type) 87f857971dSopenharmony_ci{ 88f857971dSopenharmony_ci if (type == OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR) { 89f857971dSopenharmony_ci return WriteInputFunc(CooperateType::DISABLE_SUCC, type); 90f857971dSopenharmony_ci } 91f857971dSopenharmony_ci return WriteInputFunc(CooperateType::DISABLE_FAIL, type); 92f857971dSopenharmony_ci} 93f857971dSopenharmony_ci 94f857971dSopenharmony_ciint32_t CooperateDFX::WriteLocalStart(OHOS::HiviewDFX::HiSysEvent::EventType type) 95f857971dSopenharmony_ci{ 96f857971dSopenharmony_ci if (type == OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR) { 97f857971dSopenharmony_ci return WriteInputFunc(CooperateType::LOCAL_ACTIVATE_SUCC, type); 98f857971dSopenharmony_ci } 99f857971dSopenharmony_ci return WriteInputFunc(CooperateType::LOCAL_ACTIVATE_FAIL, type); 100f857971dSopenharmony_ci} 101f857971dSopenharmony_ci 102f857971dSopenharmony_ciint32_t CooperateDFX::WriteRemoteStart(OHOS::HiviewDFX::HiSysEvent::EventType type) 103f857971dSopenharmony_ci{ 104f857971dSopenharmony_ci if (type == OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR) { 105f857971dSopenharmony_ci return WriteInputFunc(CooperateType::REMOTE_ACTIVATE_SUCC, type); 106f857971dSopenharmony_ci } 107f857971dSopenharmony_ci return WriteInputFunc(CooperateType::REMOTE_ACTIVATE_FAIL, type); 108f857971dSopenharmony_ci} 109f857971dSopenharmony_ci 110f857971dSopenharmony_ciint32_t CooperateDFX::WriteLocalStop(OHOS::HiviewDFX::HiSysEvent::EventType type) 111f857971dSopenharmony_ci{ 112f857971dSopenharmony_ci if (type == OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR) { 113f857971dSopenharmony_ci return WriteInputFunc(CooperateType::LOCAL_DEACTIVATE_SUCC, type); 114f857971dSopenharmony_ci } 115f857971dSopenharmony_ci return WriteInputFunc(CooperateType::LOCAL_DEACTIVATE_FAIL, type); 116f857971dSopenharmony_ci} 117f857971dSopenharmony_ci 118f857971dSopenharmony_ciint32_t CooperateDFX::WriteRemoteStop(OHOS::HiviewDFX::HiSysEvent::EventType type) 119f857971dSopenharmony_ci{ 120f857971dSopenharmony_ci if (type == OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR) { 121f857971dSopenharmony_ci return WriteInputFunc(CooperateType::REMOTE_DEACTIVATE_SUCC, type); 122f857971dSopenharmony_ci } 123f857971dSopenharmony_ci return WriteInputFunc(CooperateType::REMOTE_DEACTIVATE_FAIL, type); 124f857971dSopenharmony_ci} 125f857971dSopenharmony_ci 126f857971dSopenharmony_ciint32_t CooperateDFX::WriteOpenSession(OHOS::HiviewDFX::HiSysEvent::EventType type) 127f857971dSopenharmony_ci{ 128f857971dSopenharmony_ci if (type == OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR) { 129f857971dSopenharmony_ci return WriteInputFunc(CooperateType::OPENSESSION_SUCC, type); 130f857971dSopenharmony_ci } 131f857971dSopenharmony_ci return WriteInputFunc(CooperateType::OPENSESSION_FAIL, type); 132f857971dSopenharmony_ci} 133f857971dSopenharmony_ci 134f857971dSopenharmony_ciint32_t CooperateDFX::WriteStart(OHOS::HiviewDFX::HiSysEvent::EventType type) 135f857971dSopenharmony_ci{ 136f857971dSopenharmony_ci if (type == OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR) { 137f857971dSopenharmony_ci return WriteInputFunc(CooperateType::START_SUCC, type); 138f857971dSopenharmony_ci } 139f857971dSopenharmony_ci return WriteInputFunc(CooperateType::START_FAIL, type); 140f857971dSopenharmony_ci} 141f857971dSopenharmony_ci 142f857971dSopenharmony_ciint32_t CooperateDFX::WriteStop(OHOS::HiviewDFX::HiSysEvent::EventType type) 143f857971dSopenharmony_ci{ 144f857971dSopenharmony_ci if (type == OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR) { 145f857971dSopenharmony_ci return WriteInputFunc(CooperateType::STOP_SUCC, type); 146f857971dSopenharmony_ci } 147f857971dSopenharmony_ci return WriteInputFunc(CooperateType::STOP_FAIL, type); 148f857971dSopenharmony_ci} 149f857971dSopenharmony_ci 150f857971dSopenharmony_ciint32_t CooperateDFX::WriteCooperateState(CooperateState curState) 151f857971dSopenharmony_ci{ 152f857971dSopenharmony_ci if (curState == CooperateState::N_COOPERATE_STATES) { 153f857971dSopenharmony_ci return RET_ERR; 154f857971dSopenharmony_ci } 155f857971dSopenharmony_ci if (CooperateState_.find(curState) == CooperateState_.end()) { 156f857971dSopenharmony_ci FI_HILOGE("CooperateState_ can't find the current cooperate state"); 157f857971dSopenharmony_ci return RET_ERR; 158f857971dSopenharmony_ci } 159f857971dSopenharmony_ci auto type = OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR; 160f857971dSopenharmony_ci std::string currentState = CooperateState_[curState]; 161f857971dSopenharmony_ci return WriteInputFunc(CooperateType::UPDATESTATE_SUCC, type, "CurrentState", currentState); 162f857971dSopenharmony_ci} 163f857971dSopenharmony_ci} // namespace DeviceStatus 164f857971dSopenharmony_ci} // namespace Msdp 165f857971dSopenharmony_ci} // namespace OHOS 166