1/* 2 * Copyright (c) 2024 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 16#include "cooperate_hisysevent.h" 17 18#include "fi_log.h" 19 20#undef LOG_TAG 21#define LOG_TAG "CooperateHiSysEvent" 22 23namespace OHOS { 24namespace Msdp { 25namespace DeviceStatus { 26 27std::map<CooperateState, std::string> CooperateDFX::CooperateState_ = { 28 { CooperateState::COOPERATE_STATE_FREE, "STATE_FREE" }, 29 { CooperateState::COOPERATE_STATE_IN, "STATE_IN" }, 30 { CooperateState::COOPERATE_STATE_OUT, "STATE_OUT" }, 31}; 32 33std::map<CooperateType, std::pair<std::string, std::string>> CooperateDFX::serialStr_ = { 34 { CooperateType::ENABLE_SUCC, { "ENABLE_SUCCESS", "Enable cooperate successfully" } }, 35 { CooperateType::ENABLE_FAIL, { "ENABLE_FAILED", "Enable cooperate failed" } }, 36 { CooperateType::DISABLE_SUCC, { "DISABLE_SUCCESS", "Disenable cooperate successfully" } }, 37 { CooperateType::DISABLE_FAIL, { "DISABLE_FAILED", "Disenable cooperate failed" } }, 38 { CooperateType::LOCAL_ACTIVATE_SUCC, { "LOCAL_ACTIVATE_SUCCESS", "Local start cooperate successfully" } }, 39 { CooperateType::LOCAL_ACTIVATE_FAIL, { "LOCAL_ACTIVATEE_FAILED", "Local start cooperate failed" } }, 40 { CooperateType::REMOTE_ACTIVATE_SUCC, { "REMOTE_ACTIVATE_SUCCESS", "Remote start cooperate successfully" } }, 41 { CooperateType::REMOTE_ACTIVATE_FAIL, { "REMOTE_ACTIVATE_FAILED", "Remote start cooperate failed" } }, 42 { CooperateType::LOCAL_DEACTIVATE_SUCC, { "LOCAL_DEACTIVATE_SUCCESS", "Local stop cooperate successfully" } }, 43 { CooperateType::LOCAL_DEACTIVATE_FAIL, { "LOCAL_DEACTIVATE_FAILED", "Local stop cooperate failed" } }, 44 { CooperateType::REMOTE_DEACTIVATE_SUCC, { "REMOTE_DEACTIVATE_SUCCESS", "Remote stop cooperate successfully" } }, 45 { CooperateType::REMOTE_DEACTIVATE_FAIL, { "REMOTE_DEACTIVATE_FAILED", "Remote stop cooperate failed" } }, 46 { CooperateType::OPENSESSION_SUCC, { "OPENSESSION_SUCCESS", "Open session successfully" } }, 47 { CooperateType::OPENSESSION_FAIL, { "OPENSESSION_FAILED", "Open session failed" } }, 48 { CooperateType::UPDATESTATE_SUCC, { "UPDATESTATE_SUCCESS", "Update cooperatestate successfully" } }, 49 { CooperateType::START_SUCC, { "START_SUCCESS", "Start client successfully" } }, 50 { CooperateType::START_FAIL, { "START_FAILED", "Start client failed" } }, 51 { CooperateType::STOP_SUCC, { "STOP_SUCCESS", "Stop client successfully" } }, 52 { CooperateType::STOP_FAIL, { "STOP_FAILED", "Stop client failed" } }, 53}; 54 55 56template<typename... Types> 57int32_t CooperateDFX::WriteInputFunc(const CooperateType &cooperateType, 58 OHOS::HiviewDFX::HiSysEvent::EventType eventType, Types... paras) 59{ 60 if (serialStr_.find(cooperateType) == serialStr_.end()) { 61 FI_HILOGE("serialStr_ can't find the cooperate hisysevent type"); 62 return RET_ERR; 63 } 64 auto &[label, dec] = serialStr_[cooperateType]; 65 int32_t ret = HiSysEventWrite( 66 OHOS::HiviewDFX::HiSysEvent::Domain::MSDP, 67 label, 68 eventType, 69 paras..., 70 "MSG", 71 dec); 72 if (ret != RET_OK) { 73 FI_HILOGE("HiviewDFX write failed, ret:%{public}d", ret); 74 } 75 return ret; 76} 77 78int32_t CooperateDFX::WriteEnable(OHOS::HiviewDFX::HiSysEvent::EventType type) 79{ 80 if (type == OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR) { 81 return WriteInputFunc(CooperateType::ENABLE_SUCC, type); 82 } 83 return WriteInputFunc(CooperateType::ENABLE_FAIL, type); 84} 85 86int32_t CooperateDFX::WriteDisable(OHOS::HiviewDFX::HiSysEvent::EventType type) 87{ 88 if (type == OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR) { 89 return WriteInputFunc(CooperateType::DISABLE_SUCC, type); 90 } 91 return WriteInputFunc(CooperateType::DISABLE_FAIL, type); 92} 93 94int32_t CooperateDFX::WriteLocalStart(OHOS::HiviewDFX::HiSysEvent::EventType type) 95{ 96 if (type == OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR) { 97 return WriteInputFunc(CooperateType::LOCAL_ACTIVATE_SUCC, type); 98 } 99 return WriteInputFunc(CooperateType::LOCAL_ACTIVATE_FAIL, type); 100} 101 102int32_t CooperateDFX::WriteRemoteStart(OHOS::HiviewDFX::HiSysEvent::EventType type) 103{ 104 if (type == OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR) { 105 return WriteInputFunc(CooperateType::REMOTE_ACTIVATE_SUCC, type); 106 } 107 return WriteInputFunc(CooperateType::REMOTE_ACTIVATE_FAIL, type); 108} 109 110int32_t CooperateDFX::WriteLocalStop(OHOS::HiviewDFX::HiSysEvent::EventType type) 111{ 112 if (type == OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR) { 113 return WriteInputFunc(CooperateType::LOCAL_DEACTIVATE_SUCC, type); 114 } 115 return WriteInputFunc(CooperateType::LOCAL_DEACTIVATE_FAIL, type); 116} 117 118int32_t CooperateDFX::WriteRemoteStop(OHOS::HiviewDFX::HiSysEvent::EventType type) 119{ 120 if (type == OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR) { 121 return WriteInputFunc(CooperateType::REMOTE_DEACTIVATE_SUCC, type); 122 } 123 return WriteInputFunc(CooperateType::REMOTE_DEACTIVATE_FAIL, type); 124} 125 126int32_t CooperateDFX::WriteOpenSession(OHOS::HiviewDFX::HiSysEvent::EventType type) 127{ 128 if (type == OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR) { 129 return WriteInputFunc(CooperateType::OPENSESSION_SUCC, type); 130 } 131 return WriteInputFunc(CooperateType::OPENSESSION_FAIL, type); 132} 133 134int32_t CooperateDFX::WriteStart(OHOS::HiviewDFX::HiSysEvent::EventType type) 135{ 136 if (type == OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR) { 137 return WriteInputFunc(CooperateType::START_SUCC, type); 138 } 139 return WriteInputFunc(CooperateType::START_FAIL, type); 140} 141 142int32_t CooperateDFX::WriteStop(OHOS::HiviewDFX::HiSysEvent::EventType type) 143{ 144 if (type == OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR) { 145 return WriteInputFunc(CooperateType::STOP_SUCC, type); 146 } 147 return WriteInputFunc(CooperateType::STOP_FAIL, type); 148} 149 150int32_t CooperateDFX::WriteCooperateState(CooperateState curState) 151{ 152 if (curState == CooperateState::N_COOPERATE_STATES) { 153 return RET_ERR; 154 } 155 if (CooperateState_.find(curState) == CooperateState_.end()) { 156 FI_HILOGE("CooperateState_ can't find the current cooperate state"); 157 return RET_ERR; 158 } 159 auto type = OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR; 160 std::string currentState = CooperateState_[curState]; 161 return WriteInputFunc(CooperateType::UPDATESTATE_SUCC, type, "CurrentState", currentState); 162} 163} // namespace DeviceStatus 164} // namespace Msdp 165} // namespace OHOS 166