第十二节:通信之WLAN(Miracast)

   欢迎大家一起学习探讨通信之WLAN。到目前为止,我们基于“无人机接力游戏竞赛”的“站点”,“名称”,“航道”,“速度”和“动力”,等效到WLAN通信系统中,探讨了“MAC地址”,“SSID”,“信道”,“速率”和“功率”。游戏竞赛信息解释只剩“规则”和“无人机的功能”。同样,等效到WLAN通信系统中为“协议标准”和“WLAN 相关功能”,这两部分包含信息量比较多。

                                               图 1

    从本节开始,将探讨“协议标准”和“WLAN 相关功能”的概念和技术,原计划“协议标准”应在“WLAN相关功能”之前探讨,但协议标准是比较枯燥乏味,对其探讨次序进行调整。先对常使用“WLAN相关功能”探讨学习,后续再对其“协议标准”探讨。本节将对基于WLAN通信系统的Miracast功能探讨学习。

   好!“Miracast功能”相信有部分伙伴还未使用过。在手机上,该功能被命名为“投屏”,“屏幕投影”,“无线投屏”,“WiFi-Display”等等。该功能也称为WFD(WiFi-Display)。后续所有章节关于支持Miracast功能,将用“WFD”描述。

    先看其功能来源描述:

    Miracast是由Wi-Fi联盟制定发布无线显示标准,WiFi-display协议为其无线显示标准的具体实现。该功能是基于WLAN P2P链路进行数据传输。

   接下来探讨学习Miracast功能实现。支持Miracast功能的设备,在使用该功能时,可做角色“WFD source”或“WFD sink”(发送端和接收端)。

  • “WFD source”:实时将终端的video和audio(视频和音频)数据传输至WFD sink,如下图2所示。

  • “WFD sink”:将接收到的video和audio数据进行处理显示。

                                              图 2

    WFD source和WFD sink 如何通过WLAN P2P链接进行数据通信的呢?

   在WLAN P2P链路上,WFD设备将建立“UDP”和“TCP”两条网络层的链路,UDP链路用做实时数据流传输,TCP链路承载控制数据流传输。数据流传输模型如图3所示。

                                   图 3

    WFD设备如何配对连接的呢?

 WFD连接过程,如下图4所示。WFD source 的IP地址“192.168.49.156”;WFD sink 的IP地址“192.168.49.1”。

第一步:建立TCP链路。在该链路上控制流进行传输。

                                                                                          图 4

第二步:控制流信息解析,如图5所示。

                      图 5

详细数据包内容解析:

(1)由WFD source 发起options,请求WFD设备信息

OPTIONS * RTSP/1.0

CSeq: 0

Require: org.wfa.wfd1.0

(2)WFD sink 响应,并说明支持的可响应处理的方法。

RTSP/1.0 200 OK

Date: Wed, 31 Dec 2008 16:29:29 +0000

User-Agent: stagefright/1.1 (Linux;Android 9.0)

CSeq: 0

Public: org.wfa.wfd1.0, GET_PARAMETER, SET_PARAMETER

注【协议内容】:

  • A WFD Device shall be able to send and respond to the OPTIONS, SET_PARAMETER, GET_PARAMETER, and org.wfa.wfd1.0 RTSP methods。

  • A WFD Sink shall be able to send the SETUP, PLAY, PAUSE and TEARDOWN RTSP methods。

  • A WFD Source shall be able to respond to the SETUP, PAUSE, PLAY, and TEARDOWN RTSP method。

(3)再由WFD sink 发起options,请求WFD设备信息。

OPTIONS * RTSP/1.0

Date: Wed, 31 Dec 2008 16:29:29 +0000

User-Agent: stagefright/1.1 (Linux;Android 9.0)

CSeq: 1

Require: org.wfa.wfd1.0

(4)WFD source 响应,并说明支持的可响应处理的方法。

RTSP/1.0 200 OK

CSeq: 1

Public: org.wfa.wfd1.0, GET_PARAMETER, SET_PARAMETER, SETUP, PLAY, PAUSE, TEARDOWN

(5)由WFD source发起GET_PARAMETER参数请求。

GET_PARAMETER rtsp://localhost/wfd1.0 RTSP/1.0

CSeq: 1

Content-Length: 211

Content-Type: text/parameters

wfd_audio_codecs

wfd_video_formats

wfd_content_protection

sony_ext_01

sony_ext_10

sony_ext_12

wfd_coupled_sink

wfd_client_rtp_ports

wfd_uibc_capability

wfd_standby_resume_capability

wd_initial_buffer

(6)WFD sink端响应支持的参数。

RTSP/1.0 200 OK

Date: Wed, 31 Dec 2008 16:29:29 +0000

User-Agent: stagefright/1.1 (Linux;Android 9.0)

CSeq: 1

Content-Type: text/parameters

Content-Length: 377

wfd_video_formats: 28 00 02 02 0001DEFF 157C7FFF 00000FFF 00 0000 0000 11 none none, 01 02 0001DEFF 157C7FFF 00000FFF 00 0000 0000 11 none none

wfd_audio_codecs: LPCM 00000003 00, AAC 00000001 00

wfd_content_protection: none

wfd_coupled_sink: none

wfd_client_rtp_ports: RTP/AVP/UDP;unicast 15550 0 mode=play

wfd_uibc_capability: none

wfd_standby_resume_capability: none

(7)WFD source设置支持的参数。

SET_PARAMETER rtsp://localhost/wfd1.0 RTSP/1.0

CSeq: 2

Session: 00000000

Content-Length: 247

Content-Type: text/parameters

wfd_audio_codecs: AAC 00000001 00

wfd_video_formats: 00 00 02 02 00000080 00000000 00000000 00 0000 0000 00 none none

wfd_presentation_URL: rtsp://192.168.49.2/wfd1.0/streamid=0 none

wfd_client_rtp_ports: RTP/AVP/UDP;unicast 15550 0 mode=play

(8)WFD sink端回复。

RTSP/1.0 200 OK

Date: Wed, 31 Dec 2008 16:29:29 +0000

User-Agent: stagefright/1.1 (Linux;Android 9.0)

CSeq: 2

(9)WFD source 请求设置参数。

SET_PARAMETER rtsp://localhost/wfd1.0 RTSP/1.0

CSeq: 3

Session: 00000000

Content-Length: 27

Content-Type: text/parameters

wfd_trigger_method: SETUP

(10)WFD sink 响应回复

RTSP/1.0 200 OK

Date: Tue, 31 Dec 2019 01:19:50 +0000

User-Agent: stagefright/1.1 (Linux;Android 4.1)

CSeq: 3

(11)WFD sink设置参数信息。

SETUP rtsp://192.168.49.156/wfd1.0/streamid=0 RTSP/1.0

Date: Tue, 31 Dec 2019 01:19:50 +0000

User-Agent: stagefright/1.1 (Linux;Android 4.1)

CSeq: 17

Transport: RTP/AVP/UDP;unicast;client_port=15550-15551

(12)WFD source响应回复。

RTSP/1.0 200 OK

CSeq: 17

Date: Tue, Dec 31 2019 01:19:50 GMT

Session: 00000019

Transport: RTP/AVP/UDP;unicast;client_port=15550-15551;server_port=19022-19023

(13)WFD sink 发起Play请求。

PLAY rtsp://192.168.49.156/wfd1.0/streamid=0 RTSP/1.0

Date: Tue, 31 Dec 2019 01:19:50 +0000

User-Agent: stagefright/1.1 (Linux;Android 4.1)

CSeq: 18

Session: 00000019

(14)WFD source 响应回复。

RTSP/1.0 200 OK

CSeq: 18

Date: Tue, Dec 31 2019 01:19:50 GMT

    从上RTSP交互数据包信息,我们可知WFD source 和WFD sink通过RTSP控制流协商设置video,audio及UDP端口参数等。所以Miracast 的连接,在网络层主要是基于RTSP控制协议的参数同步与设置。

    本节我们探讨了基于WLAN通信系统的Miracast功能,了解了Miracast的投屏原理和连接过程。对其RTSP交互数据包内容进行了详细check。第十二节探讨就到此,后续期待共同继续探讨学习。

注:

    对以上所述专业知识有修正意见或建议,可随时留言反馈。如感兴趣更多通信知识,可关注“通信之WLAN”微信公众号。

谢谢大家支持~

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Android中调试WiFi,通常会使用wpa_supplicant和wpa_cli。下面是一些总结和步骤: 1. 在设备上运行wpa_supplicant 在设备上运行wpa_supplicant,它是一个用于处理WiFi连接的后台进程。可以在终端中使用以下命令启动它: ``` wpa_supplicant -iwlan0 -Dwext -c /data/misc/wifi/wpa_supplicant.conf ``` 其中,`wlan0` 是设备的WiFi接口名称,`wext` 是驱动程序的类型,`/data/misc/wifi/wpa_supplicant.conf` 是包含WiFi配置信息的文件路径。 2. 使用wpa_cli进行WiFi连接 wpa_cli是一个命令行工具,用于与wpa_supplicant进行交互并管理WiFi连接。可以在终端中使用以下命令启动它: ``` wpa_cli -iwlan0 ``` 此时会进入wpa_cli交互模式。可以使用以下命令执行一些操作: - `scan` 扫描可用的WiFi网络 - `scan_results` 查看扫描结果 - `add_network` 添加一个新的WiFi网络配置 - `set_network` 设置WiFi网络配置 - `enable_network` 启用WiFi网络 - `disable_network` 禁用WiFi网络 - `status` 查看当前连接状态 例如,如果要连接到名为“mywifi”的WiFi网络,可以执行以下步骤: 1. 扫描可用的WiFi网络 ``` > scan ``` 2. 查看扫描结果 ``` > scan_results ``` 会显示可用的WiFi网络列表,找到名为“mywifi”的网络并记下其network id。 3. 添加一个新的WiFi网络配置 ``` > add_network ``` 会返回一个新的network id。 4. 设置WiFi网络配置 ``` > set_network <network_id> ssid "mywifi" > set_network <network_id> psk "mypassword" ``` 其中,`<network_id>` 是上一步中返回的新的network id,`mywifi` 是WiFi网络的SSID,`mypassword` 是WiFi网络的密码。 5. 启用WiFi网络 ``` > enable_network <network_id> ``` 6. 查看连接状态 ``` > status ``` 如果连接成功,会显示类似于以下内容的信息: ``` wpa_state=COMPLETED ip_address=192.168.1.100 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值