1 /* 2 * Copyright (c) 2023 Shenzhen Kaihong Digital Industry Development 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 #ifndef OHOS_SHARING_WFD_MSG_H 17 #define OHOS_SHARING_WFD_MSG_H 18 19 #include "common/const_def.h" 20 #include "interaction/ipc_codec/ipc_msg.h" 21 #include "iremote_object.h" 22 23 namespace OHOS { 24 namespace Sharing { 25 26 enum WfdMsgId { 27 WFD_COMMON_RSP = SharingMsgId::WFD_MSG_ID_START, 28 WFD_SINK_START_REQ, 29 WFD_SINK_STOP_REQ, 30 WFD_SET_SURFACE_REQ, 31 WFD_ADD_SURFACE_REQ, 32 WFD_DEL_SURFACE_REQ, 33 WFD_SET_MEDIA_FORMAT_REQ, 34 WFD_PLAY_REQ, 35 WFD_PAUSE_REQ, 36 WFD_CLOSE_REQ, 37 WFD_SET_SCENE_TYPE_REQ, 38 WFD_MUTE_REQ, 39 WFD_UNMUTE_REQ, 40 WFD_GET_SINK_CONFIG_REQ, 41 WFD_GET_SINK_CONFIG_RSP, 42 WFD_CONNECTION_CHANGED_MSG, 43 WFD_DECODER_ACCELERATION_DONE, 44 WFD_ERROR_MSG, 45 WFD_INFO_MSG, 46 WFD_SURFACE_FAILURE, 47 WFD_SOURCE_START_DISCOVERY_REQ, 48 WFD_SOURCE_STOP_DISCOVERY_REQ, 49 WFD_SOURCE_DEVICE_FOUND_MSG, 50 WFD_SOURCE_ADD_DEVICE_REQ, 51 WFD_SOURCE_REMOVE_DEVICE_REQ, 52 WFD_SOURCE_DESTROY_SCREEN_CAPTUREREQ_REQ, 53 WFD_GET_BOUND_DEVICES_REQ, 54 WFD_GET_BOUND_DEVICES_RSP, 55 WFD_DELETE_BOUND_DEVICE_REQ 56 // domain msg 57 }; 58 59 struct BoundDeviceInfo { 60 std::string deviceId = ""; 61 std::string deviceName = ""; 62 std::string deviceAddress = ""; 63 std::string networkId = ""; 64 IpcSerializeBoundDeviceInfo65 int32_t IpcSerialize(MessageParcel &data) 66 { 67 data.WriteString(this->deviceId); 68 data.WriteString(this->deviceName); 69 data.WriteString(this->deviceAddress); 70 data.WriteString(this->networkId); 71 return 0; 72 } 73 IpcDeserializeBoundDeviceInfo74 int32_t IpcDeserialize(MessageParcel &pIpcMsg) 75 { 76 this->deviceId = pIpcMsg.ReadString(); 77 this->deviceName = pIpcMsg.ReadString(); 78 this->deviceAddress = pIpcMsg.ReadString(); 79 this->networkId = pIpcMsg.ReadString(); 80 return 0; 81 } 82 }; 83 84 struct WfdCommonRsp : public BaseMsg { 85 enum { MSG_ID = WfdMsgId::WFD_COMMON_RSP }; 86 GetMsgIdWfdCommonRsp87 int32_t GetMsgId() final { return MSG_ID; } 88 WfdCommonRsp() = default; WfdCommonRspWfdCommonRsp89 explicit WfdCommonRsp(const WfdCommonRsp &rReq) {}; 90 WfdCommonRsp &operator=(const WfdCommonRsp &rReq) 91 { 92 if (this != &rReq) { 93 this->ret = rReq.ret; 94 } 95 96 return *this; 97 } 98 99 IPC_BIND_ATTR(ret) 100 101 int32_t ret = 0; 102 }; 103 104 struct WfdSinkStartReq : public BaseMsg { 105 enum { MSG_ID = WfdMsgId::WFD_SINK_START_REQ }; GetMsgIdWfdSinkStartReq106 int32_t GetMsgId() final { return MSG_ID; } 107 108 IPC_BIND_ATTR0 109 }; 110 111 struct WfdSinkStopReq : public BaseMsg { 112 enum { MSG_ID = WfdMsgId::WFD_SINK_STOP_REQ }; GetMsgIdWfdSinkStopReq113 int32_t GetMsgId() final { return MSG_ID; } 114 115 IPC_BIND_ATTR0 116 }; 117 118 struct WfdAppendSurfaceReq : public BaseMsg { 119 enum { MSG_ID = WfdMsgId::WFD_SET_SURFACE_REQ }; 120 GetMsgIdWfdAppendSurfaceReq121 int32_t GetMsgId() final { return MSG_ID; } 122 WfdAppendSurfaceReq() = default; WfdAppendSurfaceReqWfdAppendSurfaceReq123 explicit WfdAppendSurfaceReq(const WfdAppendSurfaceReq &rReq) {}; 124 WfdAppendSurfaceReq &operator=(const WfdAppendSurfaceReq &rReq) 125 { 126 if (this != &rReq) { 127 this->sceneType = rReq.sceneType; 128 this->deviceId = rReq.deviceId; 129 this->surface = rReq.surface; 130 } 131 132 return *this; 133 } 134 135 IPC_BIND_ATTR(sceneType, deviceId, surface) 136 137 uint32_t sceneType = 1; 138 139 std::string deviceId; 140 sptr<IRemoteObject> surface; 141 }; 142 143 struct WfdRemoveSurfaceReq : public BaseMsg { 144 enum { MSG_ID = WfdMsgId::WFD_DEL_SURFACE_REQ }; 145 GetMsgIdWfdRemoveSurfaceReq146 int32_t GetMsgId() final { return MSG_ID; } 147 WfdRemoveSurfaceReq() = default; WfdRemoveSurfaceReqWfdRemoveSurfaceReq148 explicit WfdRemoveSurfaceReq(const WfdRemoveSurfaceReq &rReq) {}; 149 WfdRemoveSurfaceReq &operator=(const WfdRemoveSurfaceReq &rReq) 150 { 151 if (this != &rReq) { 152 this->surfaceId = rReq.surfaceId; 153 this->deviceId = rReq.deviceId; 154 } 155 156 return *this; 157 } 158 159 IPC_BIND_ATTR(surfaceId, deviceId) 160 161 uint64_t surfaceId; 162 std::string deviceId; 163 }; 164 165 struct CodecAttr { 166 IPC_BIND_ATTR(formatId, codecType) 167 168 int32_t formatId = -1; 169 int32_t codecType = -1; 170 }; 171 172 struct SetMediaFormatReq : public BaseMsg { 173 enum { MSG_ID = WfdMsgId::WFD_SET_MEDIA_FORMAT_REQ }; 174 GetMsgIdSetMediaFormatReq175 int32_t GetMsgId() final { return MSG_ID; } 176 SetMediaFormatReq() = default; SetMediaFormatReqSetMediaFormatReq177 explicit SetMediaFormatReq(const SetMediaFormatReq &req) {}; 178 SetMediaFormatReq &operator=(const SetMediaFormatReq &rReq) 179 { 180 if (this != &rReq) { 181 this->deviceId = rReq.deviceId; 182 this->videoAttr = rReq.videoAttr; 183 this->audioAttr = rReq.audioAttr; 184 } 185 186 return *this; 187 } 188 189 IPC_BIND_ATTR(deviceId, videoAttr, audioAttr) 190 191 std::string deviceId; 192 CodecAttr videoAttr; 193 CodecAttr audioAttr; 194 }; 195 196 struct WfdPlayReq : public BaseMsg { 197 enum { MSG_ID = WfdMsgId::WFD_PLAY_REQ }; 198 GetMsgIdWfdPlayReq199 int32_t GetMsgId() final { return MSG_ID; } 200 WfdPlayReq() = default; WfdPlayReqWfdPlayReq201 explicit WfdPlayReq(const WfdPlayReq &rReq) {}; 202 WfdPlayReq &operator=(const WfdPlayReq &rReq) 203 { 204 if (this != &rReq) { 205 this->deviceId = rReq.deviceId; 206 } 207 208 return *this; 209 } 210 211 IPC_BIND_ATTR(deviceId) 212 213 std::string deviceId; 214 }; 215 216 struct WfdPauseReq : public BaseMsg { 217 enum { MSG_ID = WfdMsgId::WFD_PAUSE_REQ }; 218 GetMsgIdWfdPauseReq219 int32_t GetMsgId() final { return MSG_ID; } 220 WfdPauseReq() = default; WfdPauseReqWfdPauseReq221 explicit WfdPauseReq(const WfdPauseReq &rReq) {}; 222 WfdPauseReq &operator=(const WfdPauseReq &rReq) 223 { 224 if (this != &rReq) { 225 this->deviceId = rReq.deviceId; 226 } 227 228 return *this; 229 } 230 231 IPC_BIND_ATTR(deviceId) 232 233 std::string deviceId; 234 }; 235 236 struct WfdCloseReq : public BaseMsg { 237 enum { MSG_ID = WfdMsgId::WFD_CLOSE_REQ }; 238 GetMsgIdWfdCloseReq239 int32_t GetMsgId() final { return MSG_ID; } 240 WfdCloseReq() = default; WfdCloseReqWfdCloseReq241 explicit WfdCloseReq(const WfdCloseReq &rReq) {}; 242 WfdCloseReq &operator=(const WfdCloseReq &rReq) 243 { 244 if (this != &rReq) { 245 this->deviceId = rReq.deviceId; 246 } 247 248 return *this; 249 } 250 251 IPC_BIND_ATTR(deviceId) 252 253 std::string deviceId; 254 }; 255 256 struct SetSceneTypeReq : public BaseMsg { 257 enum { MSG_ID = WfdMsgId::WFD_SET_SCENE_TYPE_REQ }; 258 GetMsgIdSetSceneTypeReq259 int32_t GetMsgId() final { return MSG_ID; } 260 SetSceneTypeReq() = default; SetSceneTypeReqSetSceneTypeReq261 explicit SetSceneTypeReq(const SetSceneTypeReq &rReq) {}; 262 SetSceneTypeReq &operator=(const SetSceneTypeReq &rReq) 263 { 264 if (this != &rReq) { 265 this->sceneType = rReq.sceneType; 266 this->surfaceId = rReq.surfaceId; 267 this->deviceId = rReq.deviceId; 268 } 269 270 return *this; 271 } 272 273 IPC_BIND_ATTR(sceneType, surfaceId, deviceId) 274 275 uint32_t sceneType; 276 uint64_t surfaceId; 277 278 std::string deviceId; 279 }; 280 281 struct MuteReq : public BaseMsg { 282 enum { MSG_ID = WfdMsgId::WFD_MUTE_REQ }; 283 GetMsgIdMuteReq284 int32_t GetMsgId() final { return MSG_ID; } 285 MuteReq() = default; MuteReqMuteReq286 explicit MuteReq(const MuteReq &rReq) {}; 287 MuteReq &operator=(const MuteReq &rReq) 288 { 289 if (this != &rReq) { 290 this->deviceId = rReq.deviceId; 291 } 292 293 return *this; 294 } 295 296 IPC_BIND_ATTR(deviceId) 297 298 std::string deviceId; 299 }; 300 301 struct UnMuteReq : public BaseMsg { 302 enum { MSG_ID = WfdMsgId::WFD_UNMUTE_REQ }; 303 GetMsgIdUnMuteReq304 int32_t GetMsgId() final { return MSG_ID; } 305 UnMuteReq() = default; UnMuteReqUnMuteReq306 explicit UnMuteReq(const UnMuteReq &rReq) {}; 307 UnMuteReq &operator=(const UnMuteReq &rReq) 308 { 309 if (this != &rReq) { 310 this->deviceId = rReq.deviceId; 311 } 312 313 return *this; 314 } 315 316 IPC_BIND_ATTR(deviceId) 317 318 std::string deviceId; 319 }; 320 321 struct GetSinkConfigReq : public BaseMsg { 322 enum { MSG_ID = WfdMsgId::WFD_GET_SINK_CONFIG_REQ }; 323 GetMsgIdGetSinkConfigReq324 int32_t GetMsgId() final { return MSG_ID; } 325 326 IPC_BIND_ATTR0 327 }; 328 329 struct GetSinkConfigRsp : public BaseMsg { 330 enum { MSG_ID = WfdMsgId::WFD_GET_SINK_CONFIG_RSP }; 331 GetMsgIdGetSinkConfigRsp332 int32_t GetMsgId() final { return MSG_ID; } 333 GetSinkConfigRsp() = default; GetSinkConfigRspGetSinkConfigRsp334 explicit GetSinkConfigRsp(const GetSinkConfigRsp &rReq) {}; 335 GetSinkConfigRsp &operator=(const GetSinkConfigRsp &rRsp) 336 { 337 if (this != &rRsp) { 338 this->surfaceMaximum = rRsp.surfaceMaximum; 339 this->accessDevMaximum = rRsp.accessDevMaximum; 340 this->foregroundMaximum = rRsp.foregroundMaximum; 341 } 342 343 return *this; 344 } 345 346 IPC_BIND_ATTR(surfaceMaximum, accessDevMaximum, foregroundMaximum) 347 348 uint32_t surfaceMaximum; 349 uint32_t accessDevMaximum; 350 uint32_t foregroundMaximum; 351 }; 352 353 struct WfdSourceStartDiscoveryReq : public BaseMsg { 354 enum { MSG_ID = WfdMsgId::WFD_SOURCE_START_DISCOVERY_REQ }; 355 GetMsgIdWfdSourceStartDiscoveryReq356 int32_t GetMsgId() final { return MSG_ID; } 357 358 IPC_BIND_ATTR0 359 }; 360 361 struct WfdSourceStopDiscoveryReq : public BaseMsg { 362 enum { MSG_ID = WfdMsgId::WFD_SOURCE_STOP_DISCOVERY_REQ }; 363 GetMsgIdWfdSourceStopDiscoveryReq364 int32_t GetMsgId() final { return MSG_ID; } 365 366 IPC_BIND_ATTR0 367 }; 368 369 struct WfdCastDeviceInfo { 370 IPC_BIND_ATTR(deviceId, ipAddr, deviceName, primaryDeviceType, secondaryDeviceType) 371 372 std::string deviceId; 373 std::string ipAddr; 374 std::string deviceName; 375 std::string primaryDeviceType; 376 std::string secondaryDeviceType; 377 }; 378 379 struct WfdSourceDeviceFoundMsg : public BaseMsg { 380 enum { MSG_ID = WfdMsgId::WFD_SOURCE_DEVICE_FOUND_MSG }; 381 GetMsgIdWfdSourceDeviceFoundMsg382 int32_t GetMsgId() final { return MSG_ID; } 383 384 IPC_BIND_ATTR(deviceInfos) 385 386 std::vector<WfdCastDeviceInfo> deviceInfos; 387 }; 388 389 struct WfdSourceAddDeviceReq : public BaseMsg { 390 enum { MSG_ID = WfdMsgId::WFD_SOURCE_ADD_DEVICE_REQ }; 391 GetMsgIdWfdSourceAddDeviceReq392 int32_t GetMsgId() final { return MSG_ID; } 393 394 IPC_BIND_ATTR(screenId, deviceId) 395 396 uint64_t screenId; 397 std::string deviceId; 398 }; 399 400 struct WfdSourceRemoveDeviceReq : public BaseMsg { 401 enum { MSG_ID = WfdMsgId::WFD_SOURCE_REMOVE_DEVICE_REQ }; 402 GetMsgIdWfdSourceRemoveDeviceReq403 int32_t GetMsgId() final { return MSG_ID; } 404 405 IPC_BIND_ATTR(deviceId) 406 407 std::string deviceId; 408 }; 409 410 struct DestroyScreenCaptureReq : public BaseMsg { 411 enum { MSG_ID = WfdMsgId::WFD_SOURCE_DESTROY_SCREEN_CAPTUREREQ_REQ }; 412 GetMsgIdDestroyScreenCaptureReq413 int32_t GetMsgId() final { return MSG_ID; } 414 415 IPC_BIND_ATTR(deviceId) 416 417 std::string deviceId; 418 }; 419 420 struct WfdErrorMsg : public BaseMsg { 421 enum { MSG_ID = WfdMsgId::WFD_ERROR_MSG }; 422 GetMsgIdWfdErrorMsg423 int32_t GetMsgId() final { return MSG_ID; } 424 WfdErrorMsg() = default; WfdErrorMsgWfdErrorMsg425 WfdErrorMsg(const WfdErrorMsg &rReq) {}; 426 WfdErrorMsg &operator=(const WfdErrorMsg &rReq) 427 { 428 if (this != &rReq) { 429 this->errorCode = rReq.errorCode; 430 this->agentId = rReq.agentId; 431 this->contextId = rReq.contextId; 432 this->message = rReq.message; 433 this->mac = rReq.mac; 434 } 435 436 return *this; 437 } 438 439 IPC_BIND_ATTR(errorCode, agentId, contextId, message, mac) 440 441 int32_t errorCode; 442 443 uint32_t agentId; 444 uint32_t contextId; 445 446 std::string message; 447 std::string mac; 448 }; 449 450 struct WfdConnectionChangedMsg : public BaseMsg { 451 enum { MSG_ID = WfdMsgId::WFD_CONNECTION_CHANGED_MSG }; 452 GetMsgIdWfdConnectionChangedMsg453 int32_t GetMsgId() final { return MSG_ID; } 454 WfdConnectionChangedMsg() = default; WfdConnectionChangedMsgWfdConnectionChangedMsg455 explicit WfdConnectionChangedMsg(const WfdConnectionChangedMsg &rReq) {}; 456 WfdConnectionChangedMsg &operator=(const WfdConnectionChangedMsg &rReq) 457 { 458 if (this != &rReq) { 459 this->state = rReq.state; 460 this->surfaceId = rReq.surfaceId; 461 this->ip = rReq.ip; 462 this->mac = rReq.mac; 463 this->deviceName = rReq.deviceName; 464 this->primaryDeviceType = rReq.primaryDeviceType; 465 this->secondaryDeviceType = rReq.secondaryDeviceType; 466 } 467 468 return *this; 469 } 470 471 IPC_BIND_ATTR(state, surfaceId, ip, mac, deviceName, primaryDeviceType, secondaryDeviceType) 472 473 int32_t state; 474 uint64_t surfaceId; 475 476 std::string ip; 477 std::string mac; 478 std::string deviceName; 479 std::string primaryDeviceType; 480 std::string secondaryDeviceType; 481 }; 482 483 struct WfdDecoderAccelerationDoneMsg : public BaseMsg { 484 enum { MSG_ID = WfdMsgId::WFD_DECODER_ACCELERATION_DONE }; 485 GetMsgIdWfdDecoderAccelerationDoneMsg486 int32_t GetMsgId() final { return MSG_ID; } 487 WfdDecoderAccelerationDoneMsg() = default; WfdDecoderAccelerationDoneMsgWfdDecoderAccelerationDoneMsg488 explicit WfdDecoderAccelerationDoneMsg(const WfdDecoderAccelerationDoneMsg &rReq) {}; 489 WfdDecoderAccelerationDoneMsg &operator=(const WfdDecoderAccelerationDoneMsg &rReq) 490 { 491 if (this != &rReq) { 492 this->surfaceId = rReq.surfaceId; 493 } 494 495 return *this; 496 } 497 498 IPC_BIND_ATTR(surfaceId) 499 500 uint64_t surfaceId; 501 }; 502 503 struct WfdSurfaceFailureMsg : public BaseMsg { 504 enum { MSG_ID = WfdMsgId::WFD_SURFACE_FAILURE }; 505 GetMsgIdWfdSurfaceFailureMsg506 int32_t GetMsgId() final { return MSG_ID; } 507 WfdSurfaceFailureMsg() = default; WfdSurfaceFailureMsgWfdSurfaceFailureMsg508 explicit WfdSurfaceFailureMsg(const WfdSurfaceFailureMsg &rReq) {}; 509 WfdSurfaceFailureMsg &operator=(const WfdSurfaceFailureMsg &rReq) 510 { 511 if (this != &rReq) { 512 this->surfaceId = rReq.surfaceId; 513 this->mac = rReq.mac; 514 } 515 516 return *this; 517 } 518 519 IPC_BIND_ATTR(surfaceId, mac) 520 521 uint64_t surfaceId; 522 std::string mac; 523 }; 524 525 526 struct WfdGetBoundDevicesReq : public BaseMsg { 527 enum { MSG_ID = WfdMsgId::WFD_GET_BOUND_DEVICES_REQ }; 528 GetMsgIdWfdGetBoundDevicesReq529 int32_t GetMsgId() final 530 { 531 return MSG_ID; 532 } 533 534 IPC_BIND_ATTR0 535 }; 536 537 struct WfdGetBoundDevicesRsp : public BaseMsg { 538 enum { MSG_ID = WfdMsgId::WFD_GET_BOUND_DEVICES_RSP }; 539 GetMsgIdWfdGetBoundDevicesRsp540 int32_t GetMsgId() final 541 { 542 return MSG_ID; 543 } 544 WfdGetBoundDevicesRsp() = default; 545 546 IPC_BIND_ATTR(trustDevices) 547 548 std::vector<BoundDeviceInfo> trustDevices; 549 }; 550 551 struct WfdDeleteBoundDeviceReq : public BaseMsg { 552 enum { MSG_ID = WfdMsgId::WFD_DELETE_BOUND_DEVICE_REQ }; 553 GetMsgIdWfdDeleteBoundDeviceReq554 int32_t GetMsgId() final 555 { 556 return MSG_ID; 557 } 558 WfdDeleteBoundDeviceReq() = default; 559 560 IPC_BIND_ATTR(deviceAddress) 561 562 std::string deviceAddress; 563 }; 564 565 } // namespace Sharing 566 } // namespace OHOS 567 #endif 568