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 <algorithm>
17 #include <sstream>
18 #include <iomanip>
19 #include <cstdlib>
20 #include "avsession_radar.h"
21 #include "device_manager.h"
22 #include "radar_constants.h"
23 #include "avsession_log.h"
24 #include "avsession_sysevent.h"
25 #include "ipc_skeleton.h"
26 #include "iservice_registry.h"
27 #include "system_ability_definition.h"
28
29 namespace OHOS::AVSession {
30 using json = nlohmann::json;
GetInstance()31 AVSessionRadar& AVSessionRadar::GetInstance()
32 {
33 static AVSessionRadar avSessionRadar;
34 return avSessionRadar;
35 }
36
37 // LCOV_EXCL_START
GetAnonymousDeviceId(std::string deviceId)38 std::string AVSessionRadar::GetAnonymousDeviceId(std::string deviceId)
39 {
40 const uint32_t half = DEVICE_ID_MIN_LEN / 2;
41 if (deviceId.empty() || deviceId.length() < DEVICE_ID_MIN_LEN) {
42 return "unknown";
43 }
44 return deviceId.substr(0, half) + "**" + deviceId.substr(deviceId.length() - half);
45 }
46
GetRadarErrorCode(int32_t err)47 int32_t AVSessionRadar::GetRadarErrorCode(int32_t err)
48 {
49 constexpr int32_t systemShift = 21;
50 constexpr int32_t moduleShift = 16;
51 uint32_t errorCode =
52 (AV_SESSION_SYSTEM_ID << systemShift) | (AV_SESSION_MODULE_ID << moduleShift) |
53 (static_cast<uint>(abs(err)) & 0xFFFF);
54 SLOGI("GetRadarErrorCode err:%{public}d -> %{public}d", abs(err), errorCode);
55 return errorCode;
56 }
57
GetLocalDeviceNetworkId()58 std::string AVSessionRadar::GetLocalDeviceNetworkId()
59 {
60 std::string networkId = "";
61 if (OHOS::DistributedHardware::DeviceManager::GetInstance()
62 .GetLocalDeviceNetWorkId(AVSESSION_PKG_NAME, networkId) != 0) {
63 SLOGE("GetLocalDeviceNetWorkId failed");
64 }
65
66 return networkId;
67 }
68
GetUdidByNetworkId(const std::string & networkId)69 std::string AVSessionRadar::GetUdidByNetworkId(const std::string &networkId)
70 {
71 std::string localDevUdid = "";
72 if (OHOS::DistributedHardware::DeviceManager::GetInstance()
73 .GetUdidByNetworkId(AVSESSION_PKG_NAME, networkId, localDevUdid) != 0) {
74 SLOGE("GetUdidByNetworkId failed");
75 }
76 return localDevUdid;
77 }
78
ConvertHexToString(int32_t hex)79 std::string AVSessionRadar::ConvertHexToString(int32_t hex)
80 {
81 std::stringstream str;
82 int32_t width = 3;
83 str << std::hex << std::setw(width) << std::setfill('0') << hex;
84 std::string hexStr = str.str();
85 transform(hexStr.begin(), hexStr.end(), hexStr.begin(), ::toupper);
86 return hexStr;
87 }
88 // LCOV_EXCL_STOP
89
GetLocalDevType()90 std::string AVSessionRadar::GetLocalDevType()
91 {
92 SLOGI("GetLocalDevType");
93 int32_t localDevType = 0;
94 if (OHOS::DistributedHardware::DeviceManager::GetInstance()
95 .GetLocalDeviceType(AVSESSION_PKG_NAME, localDevType) != 0) {
96 SLOGE("GetLocalDevType failed");
97 } else {
98 SLOGI("GetLocalDevType: %{public}d", localDevType);
99 }
100 return ConvertHexToString(localDevType);
101 }
102
reset()103 void AVSessionRadar::reset()
104 {
105 localNetId_.clear();
106 localUdid_.clear();
107 localDevType_.clear();
108 }
109
InitBMS()110 void AVSessionRadar::InitBMS()
111 {
112 SLOGI("InitBMS");
113 auto systemAbilityManager = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
114 if (!systemAbilityManager) {
115 SLOGE("fail to get system ability mgr");
116 return;
117 }
118
119 auto remoteObject = systemAbilityManager->GetSystemAbility(BUNDLE_MGR_SERVICE_SYS_ABILITY_ID);
120 if (!remoteObject) {
121 SLOGE("fail to get bundle manager proxy");
122 return;
123 }
124
125 SLOGI("get bundle manager proxy success");
126 bundleMgrProxy_ = iface_cast<AppExecFwk::BundleMgrProxy>(remoteObject);
127 }
128
129 // LCOV_EXCL_START
GetJsonCastDeviceList(const OutputDeviceInfo & deviceInfo,std::string & deviceList)130 void AVSessionRadar::GetJsonCastDeviceList(const OutputDeviceInfo &deviceInfo, std::string& deviceList)
131 {
132 json jDeviceInfos = json::array();
133 for (const DeviceInfo& deviceInfo : deviceInfo.deviceInfos_) {
134 json jDeviceInfo;
135 jDeviceInfo[PEER_UDID] = GetAnonymousDeviceId(GetUdidByNetworkId(deviceInfo.networkId_));
136 jDeviceInfo[PEER_BT_MAC] = "";
137 jDeviceInfo[PEER_DEV_TYPE] = ConvertHexToString(deviceInfo.deviceType_);
138 jDeviceInfo[PEER_DEV_NAME] = deviceInfo.deviceName_;
139 jDeviceInfos.push_back(jDeviceInfo);
140 }
141
142 deviceList = jDeviceInfos.dump();
143 SLOGI("GetJsonCastDeviceList: %{public}s", deviceList.c_str());
144 }
145
GetPeerInfoFromDeviceInfo(const DeviceInfo & deviceInfo,AVSessionRadarInfo & info)146 void AVSessionRadar::GetPeerInfoFromDeviceInfo(const DeviceInfo &deviceInfo, AVSessionRadarInfo &info)
147 {
148 info.peerUdid_ = GetAnonymousDeviceId(GetUdidByNetworkId(deviceInfo.networkId_));
149 info.peerBtMac_ = "";
150 info.peerNetId_ = GetAnonymousDeviceId(deviceInfo.networkId_);
151 info.peerDevType_ = ConvertHexToString(deviceInfo.deviceType_);
152 info.isTrust_ = (deviceInfo.authenticationStatus_ == 0) ?
153 static_cast<int32_t>(TrustStatus::UNTRUST) : static_cast<int32_t>(TrustStatus::TRUST);
154 }
155
GetBundleNameFromUid(int32_t uid)156 std::string AVSessionRadar::GetBundleNameFromUid(int32_t uid)
157 {
158 std::string bundleName{""};
159 if (bundleMgrProxy_ != nullptr) {
160 bundleMgrProxy_->GetNameForUid(uid, bundleName);
161 SLOGI("get bundleName:%{public}s uid:%{public}d", bundleName.c_str(), uid);
162 } else {
163 SLOGE("can't get bundleName for uid:%{public}d", uid);
164 }
165 return bundleName;
166 }
167
GetPeerInfo(const OutputDeviceInfo & outputDeviceInfo,AVSessionRadarInfo & info)168 void AVSessionRadar::GetPeerInfo(const OutputDeviceInfo& outputDeviceInfo, AVSessionRadarInfo &info)
169 {
170 if (outputDeviceInfo.deviceInfos_.size() > 0) {
171 GetPeerInfoFromDeviceInfo(outputDeviceInfo.deviceInfos_[0], info);
172 }
173 }
174
ReportWithoutTrustInfo(AVSessionRadarInfo & info)175 void AVSessionRadar::ReportWithoutTrustInfo(AVSessionRadarInfo &info)
176 {
177 HISYSEVENT_BEHAVIOR(AVSESSION_CAST_BEHAVIOR,
178 ORG_PKG, orgPkg_,
179 HOST_PKG, info.hostPkg_,
180 TO_CALL_PKG, info.toCallPkg_,
181 TRIGGER_MODE, info.triggerMode_,
182 FUNC, info.func_,
183 BIZ_SCENE, info.bizScene_,
184 BIZ_STAGE, info.bizStage_,
185 STAGE_RES, info.stageRes_,
186 BIZ_STATE, info.bizState_,
187 ERROR_CODE, info.errorCode_,
188 DISCOVERY_DEVICE_LIST, info.discoveryDeviceList_,
189 LOCAL_UDID, localUdid_,
190 LOCAL_NET_ID, localNetId_,
191 LOCAL_DEV_TYPE, localDevType_,
192 PEER_UDID, info.peerUdid_,
193 PEER_BT_MAC, info.peerBtMac_,
194 PEER_NET_ID, info.peerNetId_,
195 PEER_DEV_TYPE, info.peerDevType_);
196 }
197
ReportWithTrustInfo(AVSessionRadarInfo & info)198 void AVSessionRadar::ReportWithTrustInfo(AVSessionRadarInfo &info)
199 {
200 HISYSEVENT_BEHAVIOR(AVSESSION_CAST_BEHAVIOR,
201 ORG_PKG, orgPkg_,
202 HOST_PKG, info.hostPkg_,
203 TO_CALL_PKG, info.toCallPkg_,
204 TRIGGER_MODE, info.triggerMode_,
205 FUNC, info.func_,
206 BIZ_SCENE, info.bizScene_,
207 BIZ_STAGE, info.bizStage_,
208 STAGE_RES, info.stageRes_,
209 BIZ_STATE, info.bizState_,
210 ERROR_CODE, info.errorCode_,
211 DISCOVERY_DEVICE_LIST, info.discoveryDeviceList_,
212 LOCAL_UDID, localUdid_,
213 LOCAL_NET_ID, localNetId_,
214 LOCAL_DEV_TYPE, localDevType_,
215 PEER_UDID, info.peerUdid_,
216 PEER_BT_MAC, info.peerBtMac_,
217 PEER_NET_ID, info.peerNetId_,
218 PEER_DEV_TYPE, info.peerDevType_,
219 IS_TRUST, info.isTrust_);
220 }
221
ReportHiSysEventBehavior(AVSessionRadarInfo & info)222 void AVSessionRadar::ReportHiSysEventBehavior(AVSessionRadarInfo &info)
223 {
224 if (localNetId_.empty()) {
225 localNetId_ = GetAnonymousDeviceId(GetLocalDeviceNetworkId());
226 }
227 if (localUdid_.empty()) {
228 localUdid_ = GetAnonymousDeviceId(GetUdidByNetworkId(GetLocalDeviceNetworkId()));
229 }
230 if (localDevType_.empty()) {
231 localDevType_ = GetLocalDevType();
232 }
233 if (info.bundleName_.empty()) {
234 int32_t uid = OHOS::IPCSkeleton::GetCallingUid();
235 SLOGI("%{public}s func:%{public}s callingUid:%{public}d", __FUNCTION__, info.func_.c_str(), uid);
236 info.bundleName_ = GetBundleNameFromUid(uid);
237 }
238 info.CheckTriggerMode();
239 if (!info.bundleName_.empty()) {
240 info.hostPkg_ =
241 (info.bundleName_.find(MEDIA_CONTROL_PKG) != std::string::npos) ? MEDIA_CONTROL_PKG : info.bundleName_;
242 }
243 if (info.errorCode_ == 0) {
244 info.errorCode_ = GetRadarErrorCode(0);
245 }
246 if (info.isTrust_ == static_cast<int32_t>(TrustStatus::UNKOWN)) {
247 ReportWithoutTrustInfo(info);
248 } else {
249 ReportWithTrustInfo(info);
250 }
251 }
252
StartCastDiscoveryBegin(AVSessionRadarInfo & info)253 void AVSessionRadar::StartCastDiscoveryBegin(AVSessionRadarInfo &info)
254 {
255 info.bizScene_ = static_cast<int32_t>(BizScene::CAST_DISCOVERY);
256 info.bizStage_ = static_cast<int32_t>(CastDiscoveryStage::START);
257 info.stageRes_ = static_cast<int32_t>(StageResult::IDLE);
258 info.bizState_ = static_cast<int32_t>(BizState::BEGIN);
259 ReportHiSysEventBehavior(info);
260 }
261
StartCastDiscoveryEnd(AVSessionRadarInfo & info)262 void AVSessionRadar::StartCastDiscoveryEnd(AVSessionRadarInfo &info)
263 {
264 info.bizScene_ = static_cast<int32_t>(BizScene::CAST_DISCOVERY);
265 info.bizStage_ = static_cast<int32_t>(CastDiscoveryStage::START);
266 info.stageRes_ = static_cast<int32_t>(StageResult::SUCCESS);
267 info.bizState_ = static_cast<int32_t>(BizState::END);
268 ReportHiSysEventBehavior(info);
269 }
270
FailToStartCastDiscovery(AVSessionRadarInfo & info)271 void AVSessionRadar::FailToStartCastDiscovery(AVSessionRadarInfo &info)
272 {
273 info.bizScene_ = static_cast<int32_t>(BizScene::CAST_DISCOVERY);
274 info.bizStage_ = static_cast<int32_t>(CastDiscoveryStage::START);
275 info.stageRes_ = static_cast<int32_t>(StageResult::FAIL);
276 info.bizState_ = static_cast<int32_t>(BizState::END);
277 ReportHiSysEventBehavior(info);
278 }
279
CastDeviceAvailable(const OutputDeviceInfo & castOutputDeviceInfo,AVSessionRadarInfo & info)280 void AVSessionRadar::CastDeviceAvailable(const OutputDeviceInfo &castOutputDeviceInfo, AVSessionRadarInfo &info)
281 {
282 info.bizScene_ = static_cast<int32_t>(BizScene::CAST_DISCOVERY);
283 info.bizStage_ = static_cast<int32_t>(CastDiscoveryStage::DISPLAY);
284 info.stageRes_ = static_cast<int32_t>(StageResult::SUCCESS);
285 info.bizState_ = static_cast<int32_t>(BizState::END);
286
287 GetJsonCastDeviceList(castOutputDeviceInfo, info.discoveryDeviceList_);
288 ReportHiSysEventBehavior(info);
289 }
290
StopCastDiscoveryBegin(AVSessionRadarInfo & info)291 void AVSessionRadar::StopCastDiscoveryBegin(AVSessionRadarInfo &info)
292 {
293 info.bizScene_ = static_cast<int32_t>(BizScene::CAST_DISCOVERY);
294 info.bizStage_ = static_cast<int32_t>(CastDiscoveryStage::STOP);
295 info.stageRes_ = static_cast<int32_t>(StageResult::IDLE);
296 info.bizState_ = static_cast<int32_t>(BizState::BEGIN);
297 ReportHiSysEventBehavior(info);
298 }
299
StopCastDiscoveryEnd(AVSessionRadarInfo & info)300 void AVSessionRadar::StopCastDiscoveryEnd(AVSessionRadarInfo &info)
301 {
302 info.bizScene_ = static_cast<int32_t>(BizScene::CAST_DISCOVERY);
303 info.bizStage_ = static_cast<int32_t>(CastDiscoveryStage::STOP);
304 info.stageRes_ = static_cast<int32_t>(StageResult::SUCCESS);
305 info.bizState_ = static_cast<int32_t>(BizState::END);
306 ReportHiSysEventBehavior(info);
307 }
308
FailToStopCastDiscovery(AVSessionRadarInfo & info)309 void AVSessionRadar::FailToStopCastDiscovery(AVSessionRadarInfo &info)
310 {
311 info.bizScene_ = static_cast<int32_t>(BizScene::CAST_DISCOVERY);
312 info.bizStage_ = static_cast<int32_t>(CastDiscoveryStage::STOP);
313 info.stageRes_ = static_cast<int32_t>(StageResult::FAIL);
314 info.bizState_ = static_cast<int32_t>(BizState::END);
315 ReportHiSysEventBehavior(info);
316 }
317
StartCastBegin(const OutputDeviceInfo & outputDeviceInfo,AVSessionRadarInfo & info)318 void AVSessionRadar::StartCastBegin(const OutputDeviceInfo &outputDeviceInfo, AVSessionRadarInfo &info)
319 {
320 info.bizScene_ = static_cast<int32_t>(BizScene::CAST_START);
321 info.bizStage_ = static_cast<int32_t>(CastStartStage::START);
322 info.stageRes_ = static_cast<int32_t>(StageResult::IDLE);
323 info.bizState_ = static_cast<int32_t>(BizState::BEGIN);
324 GetPeerInfo(outputDeviceInfo, info);
325 ReportHiSysEventBehavior(info);
326 }
327 // LCOV_EXCL_STOP
328
StartCastEnd(const OutputDeviceInfo & outputDeviceInfo,AVSessionRadarInfo & info)329 void AVSessionRadar::StartCastEnd(const OutputDeviceInfo &outputDeviceInfo, AVSessionRadarInfo &info)
330 {
331 info.bizScene_ = static_cast<int32_t>(BizScene::CAST_START);
332 info.bizStage_ = static_cast<int32_t>(CastStartStage::START);
333 info.stageRes_ = static_cast<int32_t>(StageResult::SUCCESS);
334 info.bizState_ = static_cast<int32_t>(BizState::END);
335 GetPeerInfo(outputDeviceInfo, info);
336 ReportHiSysEventBehavior(info);
337 }
338
339 // LCOV_EXCL_START
FailToStartCast(AVSessionRadarInfo & info)340 void AVSessionRadar::FailToStartCast(AVSessionRadarInfo &info)
341 {
342 info.bizScene_ = static_cast<int32_t>(BizScene::CAST_START);
343 info.bizStage_ = static_cast<int32_t>(CastStartStage::START);
344 info.stageRes_ = static_cast<int32_t>(StageResult::FAIL);
345 info.bizState_ = static_cast<int32_t>(BizState::END);
346 ReportHiSysEventBehavior(info);
347 }
348
FailToStartCast(const OutputDeviceInfo & outputDeviceInfo,AVSessionRadarInfo & info)349 void AVSessionRadar::FailToStartCast(const OutputDeviceInfo &outputDeviceInfo, AVSessionRadarInfo &info)
350 {
351 info.bizScene_ = static_cast<int32_t>(BizScene::CAST_START);
352 info.bizStage_ = static_cast<int32_t>(CastStartStage::START);
353 info.stageRes_ = static_cast<int32_t>(StageResult::FAIL);
354 info.bizState_ = static_cast<int32_t>(BizState::END);
355 GetPeerInfo(outputDeviceInfo, info);
356 ReportHiSysEventBehavior(info);
357 }
358
StartConnect(AVSessionRadarInfo & info)359 void AVSessionRadar::StartConnect(AVSessionRadarInfo &info)
360 {
361 info.bizScene_ = static_cast<int32_t>(BizScene::CAST_START);
362 info.bizStage_ = static_cast<int32_t>(CastStartStage::CONNECT);
363 info.stageRes_ = static_cast<int32_t>(StageResult::IDLE);
364 info.bizState_ = static_cast<int32_t>(BizState::BEGIN);
365 ReportHiSysEventBehavior(info);
366 }
367
ConnectFinish(const DeviceInfo & deviceInfo,AVSessionRadarInfo & info)368 void AVSessionRadar::ConnectFinish(const DeviceInfo &deviceInfo, AVSessionRadarInfo &info)
369 {
370 info.bizScene_ = static_cast<int32_t>(BizScene::CAST_START);
371 info.bizStage_ = static_cast<int32_t>(CastStartStage::CONNECT);
372 info.stageRes_ = static_cast<int32_t>(StageResult::SUCCESS);
373 info.bizState_ = static_cast<int32_t>(BizState::END);
374 GetPeerInfoFromDeviceInfo(deviceInfo, info);
375 ReportHiSysEventBehavior(info);
376 }
377
StartPlayBegin(AVSessionRadarInfo & info)378 void AVSessionRadar::StartPlayBegin(AVSessionRadarInfo &info)
379 {
380 info.bizScene_ = static_cast<int32_t>(BizScene::CAST_START);
381 info.bizStage_ = static_cast<int32_t>(CastStartStage::STARTED);
382 info.stageRes_ = static_cast<int32_t>(StageResult::IDLE);
383 info.bizState_ = static_cast<int32_t>(BizState::BEGIN);
384 ReportHiSysEventBehavior(info);
385 }
386
StartPlayEnd(AVSessionRadarInfo & info)387 void AVSessionRadar::StartPlayEnd(AVSessionRadarInfo &info)
388 {
389 info.bizScene_ = static_cast<int32_t>(BizScene::CAST_START);
390 info.bizStage_ = static_cast<int32_t>(CastStartStage::STARTED);
391 info.stageRes_ = static_cast<int32_t>(StageResult::SUCCESS);
392 info.bizState_ = static_cast<int32_t>(BizState::END);
393 ReportHiSysEventBehavior(info);
394 }
395
StartPlayFailed(AVSessionRadarInfo & info)396 void AVSessionRadar::StartPlayFailed(AVSessionRadarInfo &info)
397 {
398 info.bizScene_ = static_cast<int32_t>(BizScene::CAST_START);
399 info.bizStage_ = static_cast<int32_t>(CastStartStage::STARTED);
400 info.stageRes_ = static_cast<int32_t>(StageResult::FAIL);
401 info.bizState_ = static_cast<int32_t>(BizState::END);
402 ReportHiSysEventBehavior(info);
403 }
404
PlayerStarted(AVSessionRadarInfo & info)405 void AVSessionRadar::PlayerStarted(AVSessionRadarInfo &info)
406 {
407 info.bizScene_ = static_cast<int32_t>(BizScene::CAST_START);
408 info.bizStage_ = static_cast<int32_t>(CastStartStage::STARTED);
409 info.stageRes_ = static_cast<int32_t>(StageResult::SUCCESS);
410 info.bizState_ = static_cast<int32_t>(BizState::END);
411 ReportHiSysEventBehavior(info);
412 }
413
SendControlCommandBegin(AVSessionRadarInfo & info)414 void AVSessionRadar::SendControlCommandBegin(AVSessionRadarInfo &info)
415 {
416 info.bizScene_ = static_cast<int32_t>(BizScene::CAST_CONTROL);
417 info.bizStage_ = static_cast<int32_t>(CastControlStage::SEND_COMMAND);
418 info.stageRes_ = static_cast<int32_t>(StageResult::IDLE);
419 info.bizState_ = static_cast<int32_t>(BizState::BEGIN);
420 ReportHiSysEventBehavior(info);
421 }
422
SendControlCommandEnd(AVSessionRadarInfo & info)423 void AVSessionRadar::SendControlCommandEnd(AVSessionRadarInfo &info)
424 {
425 info.bizScene_ = static_cast<int32_t>(BizScene::CAST_CONTROL);
426 info.bizStage_ = static_cast<int32_t>(CastControlStage::SEND_COMMAND);
427 info.stageRes_ = static_cast<int32_t>(StageResult::SUCCESS);
428 info.bizState_ = static_cast<int32_t>(BizState::END);
429 ReportHiSysEventBehavior(info);
430 }
431
FailToSendControlCommand(AVSessionRadarInfo & info)432 void AVSessionRadar::FailToSendControlCommand(AVSessionRadarInfo &info)
433 {
434 info.bizScene_ = static_cast<int32_t>(BizScene::CAST_CONTROL);
435 info.bizStage_ = static_cast<int32_t>(CastControlStage::SEND_COMMAND);
436 info.stageRes_ = static_cast<int32_t>(StageResult::FAIL);
437 info.bizState_ = static_cast<int32_t>(BizState::END);
438 ReportHiSysEventBehavior(info);
439 }
440
ControlCommandRespond(AVSessionRadarInfo & info)441 void AVSessionRadar::ControlCommandRespond(AVSessionRadarInfo &info)
442 {
443 info.bizScene_ = static_cast<int32_t>(BizScene::CAST_CONTROL);
444 info.bizStage_ = static_cast<int32_t>(CastControlStage::RECV_COMMAND);
445 info.stageRes_ = static_cast<int32_t>(StageResult::SUCCESS);
446 info.bizState_ = static_cast<int32_t>(BizState::END);
447 ReportHiSysEventBehavior(info);
448 }
449
ControlCommandError(AVSessionRadarInfo & info)450 void AVSessionRadar::ControlCommandError(AVSessionRadarInfo &info)
451 {
452 info.bizScene_ = static_cast<int32_t>(BizScene::CAST_CONTROL);
453 info.bizStage_ = static_cast<int32_t>(CastControlStage::RECV_COMMAND);
454 info.stageRes_ = static_cast<int32_t>(StageResult::FAIL);
455 info.bizState_ = static_cast<int32_t>(BizState::END);
456 ReportHiSysEventBehavior(info);
457 }
458
StopCastBegin(const OutputDeviceInfo & outputDeviceInfo,AVSessionRadarInfo & info)459 void AVSessionRadar::StopCastBegin(const OutputDeviceInfo& outputDeviceInfo, AVSessionRadarInfo &info)
460 {
461 info.bizScene_ = static_cast<int32_t>(BizScene::CAST_END);
462 info.bizStage_ = static_cast<int32_t>(CastStopStage::STOP_BEGIN);
463 info.stageRes_ = static_cast<int32_t>(StageResult::IDLE);
464 info.bizState_ = static_cast<int32_t>(BizState::BEGIN);
465 GetPeerInfo(outputDeviceInfo, info);
466 ReportHiSysEventBehavior(info);
467 }
468
StopCastEnd(const OutputDeviceInfo & outputDeviceInfo,AVSessionRadarInfo & info)469 void AVSessionRadar::StopCastEnd(const OutputDeviceInfo& outputDeviceInfo, AVSessionRadarInfo &info)
470 {
471 info.bizScene_ = static_cast<int32_t>(BizScene::CAST_END);
472 info.bizStage_ = static_cast<int32_t>(CastStopStage::STOP_BEGIN);
473 info.stageRes_ = static_cast<int32_t>(StageResult::SUCCESS);
474 info.bizState_ = static_cast<int32_t>(BizState::END);
475 GetPeerInfo(outputDeviceInfo, info);
476 ReportHiSysEventBehavior(info);
477 }
478
FailToStopCast(AVSessionRadarInfo & info)479 void AVSessionRadar::FailToStopCast(AVSessionRadarInfo &info)
480 {
481 info.bizScene_ = static_cast<int32_t>(BizScene::CAST_END);
482 info.bizStage_ = static_cast<int32_t>(CastStopStage::STOP_BEGIN);
483 info.stageRes_ = static_cast<int32_t>(StageResult::FAIL);
484 info.bizState_ = static_cast<int32_t>(BizState::END);
485 ReportHiSysEventBehavior(info);
486 }
487
FailToStopCast(const OutputDeviceInfo & outputDeviceInfo,AVSessionRadarInfo & info)488 void AVSessionRadar::FailToStopCast(const OutputDeviceInfo &outputDeviceInfo, AVSessionRadarInfo &info)
489 {
490 info.bizScene_ = static_cast<int32_t>(BizScene::CAST_END);
491 info.bizStage_ = static_cast<int32_t>(CastStopStage::STOP_BEGIN);
492 info.stageRes_ = static_cast<int32_t>(StageResult::FAIL);
493 info.bizState_ = static_cast<int32_t>(BizState::END);
494 GetPeerInfo(outputDeviceInfo, info);
495 ReportHiSysEventBehavior(info);
496 }
497
StopCastFinish(const DeviceInfo & deviceInfo,AVSessionRadarInfo & info)498 void AVSessionRadar::StopCastFinish(const DeviceInfo &deviceInfo, AVSessionRadarInfo &info)
499 {
500 info.bizScene_ = static_cast<int32_t>(BizScene::CAST_END);
501 info.bizStage_ = static_cast<int32_t>(CastStopStage::STOP_END);
502 info.stageRes_ = static_cast<int32_t>(StageResult::SUCCESS);
503 info.bizState_ = static_cast<int32_t>(BizState::END);
504 GetPeerInfoFromDeviceInfo(deviceInfo, info);
505 ReportHiSysEventBehavior(info);
506 }
507 // LCOV_EXCL_STOP
508 } // namespace OHOS::AVSession
509