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