• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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