Wifi Display
wifi display常用術語
AP:wifi access point
Primary Sink: a device that supports rendering video content only or both audio and video contents.
Secondary Sink: a device that supports rending audio content only.
Wifi P2P: a protocol that provides wifi device-to-device connectivity including discovery and paring,whitout requiring an AP.
2、Variable header 可變報頭,部分報文包含
3、Body 有效載荷,部分報文包含
固定報頭
報頭長度:2 ~ 5 Bytes

1、報文類型:由第一個字節4-7 表示;共16個類型,但是保留第0個,第15個類型不用:

2、標志位,標志報文類型的特定標志,第一個字節的0-3:

3、剩余長度,從第二個字節開始,最少一個字節,最長四個字節。表示當前報文剩余部分(可變報頭+負載數據)的字節數。不包括用于編碼Remaining Length字段本身的字節數。
它使用一個變長度編碼方案,對小于128的值,它使用單字節編碼。
大值處理:低7位有效位用于編碼數據,最高有效位用于指示是否有更多的字節。
因此每個字節可以編碼128個數值和一個延續位(continuation bit)。
剩余長度字段的大小:

非負整數x使用變長編碼方案算法:
do
encodedByte = x%128;
x = x /128;
if (x > 0 ){
encodedByte = encodedByte|128; //延續標志位置1
}else{
encodedByte = encodedByte;
}
fill_fix_header_remain_len(encodeByte);
while(x>0)
剩余長度字段的解碼算法:
multiplier = 1
value = 0
do
encodedByte = 'next byte from stream'
value += (encodedByte AND 127) * multiplier
multiplier *= 128
if (multiplier > 128*128*128)
throw Error(Malformed Remaining Length)
while ((encodedByte AND 128) != 0)//判斷下一個字節的最高位是否為1,不等于1就表示是最后一個長度字節,value的值就是剩余長度的值
可變報頭
在固定報頭和body之間,內容根據報文類型不同而不同。可變報頭的標識符字段存在于在多個類型的報文里。?
報文標識符類型:

很多控制報文的可變報頭部分,包含一個兩字節的報文標識符字段。比如:PUBLISH(QoS > 0時), PUBACK,PUBREC,PUBREL,
PUBCOMP,SUBSCRIBE, SUBACK,UNSUBSCIBE,UNSUBACK。
SUBSCRIBE,UNSUBSCRIBE 和 PUBLISH(QoS大于0)控制報文必須包含一個非零的16位報文標識符。
有效載荷
對于PUBLISH來說就是消息內容了。
需要有效載荷的控制報文:CONNECT、SUBSCRIBE、SUBACK、UNSUBSCRIBE。 PUBLISH是可選。

浙公網安備 33010602011771號