本發(fā)明涉及航天測(cè)控技術(shù)領(lǐng)域,尤其涉及一種解析包裝數(shù)據(jù)協(xié)議單元的方法和裝置。
背景技術(shù):
空間數(shù)據(jù)系統(tǒng)咨詢委員會(huì)(英文:Consultative Committee for the Space Data Systems,縮寫:CCSDS)建議實(shí)現(xiàn)了高效的空間數(shù)據(jù)通信,優(yōu)化利用空間資源,擴(kuò)大了國(guó)際合作的范圍。采用CCSDS建議為航天器提供更大的覆蓋率與費(fèi)效比。地面測(cè)控?cái)?shù)據(jù)處理系統(tǒng)所接收的CCSDS數(shù)據(jù)不局限于遙測(cè)數(shù)據(jù),還包括話音、圖像、有效載荷實(shí)驗(yàn)數(shù)據(jù)等,接收后的數(shù)據(jù)應(yīng)根據(jù)CCSDS建議數(shù)據(jù)結(jié)構(gòu)的定義、用戶的需求等進(jìn)行數(shù)據(jù)的組幀及還原,并分發(fā)給不同用戶,由其進(jìn)行最終業(yè)務(wù)處理。常見的一類數(shù)據(jù)還原處理是:從多路協(xié)議數(shù)據(jù)單元(英文:Multiplex Protocol Data Unit,縮寫:MPDU)數(shù)據(jù)中還原出每個(gè)獨(dú)立的包裝協(xié)議數(shù)據(jù)單(英文:Encaptured Protocol Data Unit,縮寫:EPDU)數(shù)據(jù)。
本發(fā)明的發(fā)明人發(fā)現(xiàn),目前對(duì)于MPDU數(shù)據(jù)組幀未考慮亂序、丟幀等情況,按接收的順序進(jìn)行緩存,在MPDU數(shù)據(jù)亂序(即接收的數(shù)據(jù)順序與發(fā)送的數(shù)據(jù)順序不一致)、丟幀、中斷等情況下,會(huì)解析出錯(cuò)誤的EPDU數(shù)據(jù),從而影響飛行器的狀態(tài)判讀。
現(xiàn)有的按接收順序進(jìn)行組幀的方法是一種理想化的方法。在數(shù)據(jù)傳輸過(guò)程中可能存在的數(shù)據(jù)亂序、丟幀、中斷等影響因素沒(méi)有考慮或者考慮不全面,會(huì)產(chǎn)生錯(cuò)誤的數(shù)據(jù)順序,從而會(huì)還原或解析出錯(cuò)誤的數(shù)據(jù),導(dǎo)致遙測(cè)參數(shù)錯(cuò)誤、圖像馬賽克等。
技術(shù)實(shí)現(xiàn)要素:
技術(shù)問(wèn)題
有鑒于此,本發(fā)明要解決的技術(shù)問(wèn)題是,在從MPDU解析出EPDU的過(guò)程中,如何在數(shù)據(jù)亂序、丟幀、中斷等情況下,實(shí)現(xiàn)數(shù)據(jù)的正確組幀并解析出正確的EPDU數(shù)據(jù)。
解決方案
為解決以上技術(shù)問(wèn)題,本發(fā)明在第一方面提供一種解析包裝數(shù)據(jù)協(xié)議單元的方法,包括:
對(duì)多路協(xié)議數(shù)據(jù)單元MPDU數(shù)據(jù)進(jìn)行組幀,包括:
將接收到的第一個(gè)MPDU數(shù)據(jù)作為首幀MPDU數(shù)據(jù)進(jìn)行緩存;
根據(jù)首幀MPDU數(shù)據(jù)和后續(xù)接收的MPDU數(shù)據(jù)的虛擬信道計(jì)數(shù)及虛擬信道時(shí)標(biāo)進(jìn)行計(jì)算,得到后續(xù)接收的MPDU數(shù)據(jù)相對(duì)于所述首幀MPDU數(shù)據(jù)的幀間隔數(shù);
根據(jù)幀間隔數(shù)確定后續(xù)接收的MPDU數(shù)據(jù)的緩存位置;
根據(jù)后續(xù)接收的MPDU數(shù)據(jù)的緩存位置,緩存后續(xù)的MPDU數(shù)據(jù)的信息,包括數(shù)據(jù)區(qū)、首導(dǎo)頭指針和時(shí)標(biāo),并將所述后續(xù)接收的MPDU數(shù)據(jù)標(biāo)記為待組幀MPDU數(shù)據(jù);
根據(jù)待組幀MPDU數(shù)據(jù)解析包裝數(shù)據(jù)協(xié)議單元EPDU數(shù)據(jù),包括:
根據(jù)待組幀MPDU數(shù)據(jù)的首導(dǎo)頭指針,確定待組幀MPDU數(shù)據(jù)的源包的起始地址;
根據(jù)待組幀MPDU數(shù)據(jù)的數(shù)據(jù)區(qū)長(zhǎng)度、源包的長(zhǎng)度、有效數(shù)據(jù)組幀長(zhǎng)度及組幀標(biāo)志,從源包的起始地址開始,對(duì)已緩存的所述MPDU數(shù)據(jù)的有效數(shù)據(jù)進(jìn)行組幀;以及
當(dāng)待組幀MPDU數(shù)據(jù)長(zhǎng)度大于或等于所述EPDU數(shù)據(jù)的主導(dǎo)頭長(zhǎng)度與包長(zhǎng)加1之和時(shí),解析出所述EPDU數(shù)據(jù)。
在一種可能的實(shí)現(xiàn)方式中,在所述對(duì)多個(gè)多路協(xié)議數(shù)據(jù)單元MPDU數(shù)據(jù)進(jìn)行組幀之前,還包括:
根據(jù)第一公式計(jì)算最長(zhǎng)的所述EPDU數(shù)據(jù)所占的MPDU數(shù)據(jù)的幀數(shù),所述第一公式為:EpduMaxMpduNum=(MaxEpduLen/MpduDataLen+1)+1;
其中,EpduMaxMpduNum為最長(zhǎng)的所述EPDU數(shù)據(jù)所占的MPDU數(shù)據(jù)的幀數(shù),MaxEpduLen為最長(zhǎng)的EPDU數(shù)據(jù)的源包長(zhǎng)度,MpduDataLen為MPDU數(shù)據(jù)的數(shù)據(jù)區(qū)長(zhǎng)度。
在一種可能的實(shí)現(xiàn)方式中,根據(jù)首幀MPDU數(shù)據(jù)的虛擬信道計(jì)數(shù)值和后續(xù)接收的MPDU數(shù)據(jù)的虛擬信道計(jì)數(shù)值,計(jì)算后續(xù)接收的MPDU數(shù)據(jù)相對(duì)于首幀MPDU數(shù)據(jù)的幀間隔數(shù),包括:
根據(jù)第二公式計(jì)算所述后續(xù)接收的MPDU數(shù)據(jù)相對(duì)于所述首幀MPDU數(shù)據(jù)的幀間隔數(shù),所述第二公式為:MpduSubSeq=CurMpduVcduSeq-FirstMpduVcduSeq
其中,MpduSubSeq為后續(xù)接收的MPDU數(shù)據(jù)相對(duì)于所述首幀MPDU數(shù)據(jù)的幀間隔數(shù),CurMpduVcduSeq為所述后續(xù)接收的MPDU數(shù)據(jù)對(duì)應(yīng)的虛擬信道計(jì)數(shù),F(xiàn)irstMpduVcduSeq為所述首幀MPDU數(shù)據(jù)對(duì)應(yīng)的虛擬信道計(jì)數(shù)。
在一種可能的實(shí)現(xiàn)方式中,在解析出所述EPDU數(shù)據(jù)之后,還包括:
根據(jù)第三公式,更新待解析的首幀MPDU數(shù)據(jù)的首導(dǎo)頭指針,所述第三公式為:NewFirstMpduStartAddr=(OldFirstMpduStartAddr+EpduHeadLen+EpduDataLen+1)%MpduDataLen;(%為取模運(yùn)算)
其中,NewFirstMpduStartAddr為待解析的首幀MPDU數(shù)據(jù)的首導(dǎo)頭指針,OldFirstMpduStartAddr為源包解析之前的首幀MPDU數(shù)據(jù)的首導(dǎo)頭指針,EpduDataLen為本次解析出的源包包長(zhǎng),EpduHeadLen為源包EPDU主導(dǎo)頭長(zhǎng)度,MpduDataLen為MPDU的數(shù)據(jù)區(qū)長(zhǎng)度。
在一種可能的實(shí)現(xiàn)方式中,在解析出EPDU數(shù)據(jù)之后,還包括:
根據(jù)第四公式,計(jì)算緩存中待處理的所述MPDU數(shù)據(jù)與更新后的所述首幀MPDU數(shù)據(jù)的最大幀間隔數(shù),所述第四公式為:
NewMaxMpduNum=OldMaxMpduNum-(OldFirstMpduStartAddr+EpduHeadLen+EpduDataLen+1+FillMpduNum*MpduDataLen)/MpduDataLen;
其中,NewMaxMpduNum為緩存中待處理的所述MPDU數(shù)據(jù)與更新后的所述首幀MPDU數(shù)據(jù)的最大幀間隔數(shù),OldMaxMpduNum為源包解析之前緩存中待處理的MPDU與首幀MPDU的最大幀間隔數(shù);FillMpduNum為解析過(guò)程中MPDU數(shù)據(jù)的填充數(shù)。
為解決以上技術(shù)問(wèn)題,本發(fā)明在第二方面提供一種解析包裝數(shù)據(jù)協(xié)議單元的裝置,包括:
組幀模塊,用于對(duì)多個(gè)多路協(xié)議數(shù)據(jù)單元MPDU數(shù)據(jù)進(jìn)行組幀,所述組幀模塊被配置為:
將接收到的第一個(gè)MPDU數(shù)據(jù)作為首幀MPDU數(shù)據(jù)進(jìn)行緩存;
根據(jù)所述首幀MPDU數(shù)據(jù)的虛擬信道計(jì)數(shù)值和后續(xù)接收的MPDU數(shù)據(jù)的虛擬信道計(jì)數(shù)值,計(jì)算所述后續(xù)接收的MPDU數(shù)據(jù)相對(duì)于所述首幀MPDU數(shù)據(jù)的幀間隔數(shù);
根據(jù)所述幀間隔數(shù)確定所述后續(xù)接收的MPDU數(shù)據(jù)的緩存地址;
根據(jù)所述后續(xù)接收的MPDU數(shù)據(jù)的緩存地址,緩存所述后續(xù)的MPDU數(shù)據(jù)的信息,所述后續(xù)接收的MPDU數(shù)據(jù)的信息包括數(shù)據(jù)區(qū)、首導(dǎo)頭指針和測(cè)站時(shí)標(biāo),并將所述后續(xù)接收的MPDU數(shù)據(jù)標(biāo)記為已組幀MPDU數(shù)據(jù);
解析模塊,用于根據(jù)所述待組幀MPDU數(shù)據(jù)解析包裝數(shù)據(jù)協(xié)議單元EPDU數(shù)據(jù),所述解析模塊被配置為:
根據(jù)所述待組幀MPDU數(shù)據(jù)的首導(dǎo)頭指針,確定所述待組幀MPDU數(shù)據(jù)的源包的起始地址;
根據(jù)所述待組幀MPDU數(shù)據(jù)的數(shù)據(jù)區(qū)長(zhǎng)度、所述源包的長(zhǎng)度、有效數(shù)據(jù)組幀長(zhǎng)度及組幀標(biāo)志,從所述源包的起始地址開始,對(duì)已緩存的所述MPDU數(shù)據(jù)的有效數(shù)據(jù)進(jìn)行組幀;以及
當(dāng)待組幀MPDU數(shù)據(jù)長(zhǎng)度大于或等于所述EPDU數(shù)據(jù)的主導(dǎo)頭長(zhǎng)度與包長(zhǎng)加1之和時(shí),解析出所述EPDU數(shù)據(jù)。
在一種可能的實(shí)現(xiàn)方式中,所述裝置還包括:計(jì)算模塊,用于在所述對(duì)多個(gè)多路協(xié)議數(shù)據(jù)單元MPDU數(shù)據(jù)進(jìn)行組幀之前,根據(jù)第一公式計(jì)算最長(zhǎng)的所述EPDU數(shù)據(jù)所占的MPDU數(shù)據(jù)的幀數(shù),所述第一公式為:
EpduMaxMpduNum=(MaxEpduLen/MpduDataLen+1)+1;
其中,EpduMaxMpduNum為最長(zhǎng)的所述EPDU數(shù)據(jù)所占的MPDU數(shù)據(jù)的幀數(shù),MaxEpduLen為最長(zhǎng)的EPDU數(shù)據(jù)的源包長(zhǎng)度,MpduDataLen為MPDU數(shù)據(jù)的數(shù)據(jù)區(qū)長(zhǎng)度。
在一種可能的實(shí)現(xiàn)方式中,所述組幀模塊還用于:
根據(jù)第二公式計(jì)算所述后續(xù)接收的MPDU數(shù)據(jù)相對(duì)于所述首幀MPDU數(shù)據(jù)的幀間隔數(shù),所述第二公式為:MpduSubSeq=CurMpduVcduSeq-FirstMpduVcduSeq
其中,MpduSubSeq為所述后續(xù)接收的MPDU數(shù)據(jù)相對(duì)于所述首幀MPDU數(shù)據(jù)的幀間隔數(shù),CurMpduVcduSeq為所述后續(xù)接收的MPDU數(shù)據(jù)對(duì)應(yīng)的虛擬信道計(jì)數(shù),F(xiàn)irstMpduVcduSeq為所述首幀MPDU數(shù)據(jù)對(duì)應(yīng)的虛擬信道計(jì)數(shù)。
在一種可能的實(shí)現(xiàn)方式中,所述計(jì)算模塊還用于在解析出所述EPDU數(shù)據(jù)之后,根據(jù)第三公式,更新待解析的所述首幀MPDU數(shù)據(jù)的首導(dǎo)頭指針,所述第三公式為:NewFirstMpduStartAddr=(OldFirstMpduStartAddr+EpduHeadLen+EpduDataLen+1)%MpduDataLen;(%為取模運(yùn)算)
其中,NewFirstMpduStartAddr為待解析的所述首幀MPDU數(shù)據(jù)的首導(dǎo)頭指針,OldFirstMpduStartAddr為源包解析之前的所述首幀MPDU數(shù)據(jù)的首導(dǎo)頭指針,EpduDataLen為本次解析出的源包包長(zhǎng),EpduHeadLen為源包EPDU主導(dǎo)頭長(zhǎng)度,MpduDataLen為MPDU的數(shù)據(jù)區(qū)長(zhǎng)度。
在一種可能的實(shí)現(xiàn)方式中,所述計(jì)算模塊還用于在解析出所述EPDU數(shù)據(jù)之后,根據(jù)第四公式,計(jì)算緩存中待處理的所述MPDU數(shù)據(jù)與更新后的所述首幀MPDU數(shù)據(jù)的最大幀間隔數(shù),所述第四公式為:
NewMaxMpduNum=OldMaxMpduNum-(OldFirstMpduStartAddr+EpduHeadLen+EpduDataLen+1+FillMpduNum*MpduDataLen)/MpduDataLen;
其中,NewMaxMpduNum為緩存中待處理的所述MPDU數(shù)據(jù)與更新后的所述首幀MPDU數(shù)據(jù)的最大幀間隔數(shù),OldMaxMpduNum為源包解析之前緩存中待處理的MPDU與首幀MPDU的最大幀間隔數(shù),F(xiàn)illMpduNum為解析過(guò)程中MPDU數(shù)據(jù)的填充數(shù)。
有益效果
本發(fā)明實(shí)施例提供的解析包裝數(shù)據(jù)協(xié)議單元的方法和裝置,對(duì)接收過(guò)程中未收到的數(shù)據(jù)標(biāo)識(shí)為丟幀。每次組幀后,對(duì)緩存中的數(shù)據(jù)進(jìn)行解析,跨過(guò)MPDU的填充幀,復(fù)原出獨(dú)立源包,直至遇到丟幀或不完整源包。在數(shù)據(jù)有丟幀時(shí),如果沒(méi)有超過(guò)數(shù)據(jù)時(shí)序容錯(cuò)性或?qū)崟r(shí)性要求,則等待接收下一個(gè)MPDU數(shù)據(jù);如果超過(guò)數(shù)據(jù)時(shí)序容錯(cuò)性,則跳過(guò)丟幀數(shù)據(jù),將其中完整的源包復(fù)原,如果不滿足實(shí)時(shí)性要求,則該源包只記盤不發(fā)送,如果滿足實(shí)時(shí)性,則發(fā)送該源包給相關(guān)專業(yè)進(jìn)行處理。由此,在時(shí)序混亂、丟幀、數(shù)據(jù)中斷情況下,保證MPDU數(shù)據(jù)組幀的正確性,也因此而保證了解析出的EPDU數(shù)據(jù)的正確性。
本發(fā)明實(shí)施例提供的解析包裝數(shù)據(jù)協(xié)議單元的方法和裝置,能夠?yàn)椴煌臄?shù)據(jù)幀頻、MPDU的數(shù)據(jù)長(zhǎng)度、EPDU格式,MPDU數(shù)據(jù)提供通用的組幀方法,能夠適應(yīng)于不同的數(shù)據(jù)幀頻、MPDU的數(shù)據(jù)長(zhǎng)度、EPDU的數(shù)據(jù)格式。
本發(fā)明實(shí)施例提供的解析包裝數(shù)據(jù)協(xié)議單元的方法和裝置,通過(guò)更新首幀MPDU數(shù)據(jù)的首導(dǎo)頭指針,能夠有效避免跨幀數(shù)據(jù)處理中的丟幀問(wèn)題。
本發(fā)明實(shí)施例提供的解析包裝數(shù)據(jù)協(xié)議單元的方法和裝置,通過(guò)根據(jù)第四公式,計(jì)算緩存中待處理的所述MPDU數(shù)據(jù)與更新后的所述首幀MPDU數(shù)據(jù)的最大幀間隔數(shù),能夠保證數(shù)據(jù)不超過(guò)最大緩存,滿足數(shù)據(jù)的實(shí)時(shí)性要求。
根據(jù)下面參考附圖對(duì)示例性實(shí)施例的詳細(xì)說(shuō)明,本發(fā)明的其它特征及方面將變得清楚。
附圖說(shuō)明
包含在說(shuō)明書中并且構(gòu)成說(shuō)明書的一部分的附圖與說(shuō)明書一起示出了本發(fā)明的示例性實(shí)施例、特征和方面,并且用于解釋本發(fā)明的原理。
圖1示出本發(fā)明實(shí)施例提供的一種解析包裝數(shù)據(jù)協(xié)議單元的方法的流程圖;
圖2示出本發(fā)明另一實(shí)施例提供的一種解析包裝數(shù)據(jù)協(xié)議單元的方法的流程圖;
圖3示出本發(fā)明實(shí)施例提供的一種解析包裝數(shù)據(jù)協(xié)議單元的裝置的結(jié)構(gòu)示意圖;
圖4示出本發(fā)明另一實(shí)施例提供的一種解析包裝數(shù)據(jù)協(xié)議單元的裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
以下將參考附圖詳細(xì)說(shuō)明本發(fā)明的各種示例性實(shí)施例、特征和方面。附圖中相同的附圖標(biāo)記表示功能相同或相似的元件。盡管在附圖中示出了實(shí)施例的各種方面,但是除非特別指出,不必按比例繪制附圖。
在這里專用的詞“示例性”意為“用作例子、實(shí)施例或說(shuō)明性”。這里作為“示例性”所說(shuō)明的任何實(shí)施例不必解釋為優(yōu)于或好于其它實(shí)施例。
另外,為了更好的說(shuō)明本發(fā)明,在下文的具體實(shí)施方式中給出了眾多的具體細(xì)節(jié)。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,沒(méi)有某些具體細(xì)節(jié),本發(fā)明同樣可以實(shí)施。在一些實(shí)例中,對(duì)于本領(lǐng)域技術(shù)人員熟知的方法、手段、元件和電路未作詳細(xì)描述,以便于凸顯本發(fā)明的主旨。
實(shí)施例1
飛行器將采集的數(shù)據(jù)打包成EPDU后,將多種類型的EPDU級(jí)聯(lián)成固定長(zhǎng)度的MPDU,加上虛擬信道導(dǎo)頭、字尾、校驗(yàn)碼信息等進(jìn)一步封裝成虛擬信道數(shù)據(jù)單元VCDU,具體每個(gè)虛擬信道的數(shù)據(jù)格式可以獨(dú)立規(guī)定。在VCDU前增加四字節(jié)同步序列,形成信道訪問(wèn)數(shù)據(jù)單元(英文:Channel Access Data Unit,縮寫:CADU)。地面接收端接收到下行數(shù)據(jù)后,按器上組裝的逆順序還原出每個(gè)獨(dú)立的EPDU數(shù)據(jù)。
CCSDS建議的CADU與VCDU的數(shù)據(jù)格式如表1所示。
表1
CCSDS建議的MPDU格式如表2所示:
表2
其中MPDU導(dǎo)頭中的首導(dǎo)頭指針直接指向第一個(gè)源包的起始位置,根據(jù)源包中包長(zhǎng)度的標(biāo)志就可以區(qū)分出每個(gè)獨(dú)立的源包。如果多路協(xié)議數(shù)據(jù)單元包域第一個(gè)字節(jié)就是源包頭的第一字節(jié),則首導(dǎo)頭指針為0;如果多路協(xié)議數(shù)據(jù)單元中不包含源包包頭,那么首導(dǎo)頭指針域通過(guò)指定的二進(jìn)制數(shù)據(jù)標(biāo)識(shí)為“不含包頭”;如果多路協(xié)議數(shù)據(jù)單元中不包含任何有效的用戶數(shù)據(jù)(即填充包),那么再通過(guò)另一個(gè)指定的二進(jìn)制數(shù)據(jù)標(biāo)識(shí)為“填充包”。
如果一個(gè)源包的導(dǎo)頭被分在兩個(gè)MPDU中(被分割的源包分在MPDU(x)和MPDU(x+1)中),如果該源包是MPDU(x)的第一個(gè)源包,那么MPDU(x)的首導(dǎo)頭指針域指向這個(gè)源包首地址。如果不是MPDU(x)的第一個(gè)源包,那么MPDU(x+1)的首導(dǎo)頭指針指向被分割源包的后一個(gè)源包頭。
包裝協(xié)議數(shù)據(jù)單元EPDU由飛行器各分系統(tǒng)不同類型的數(shù)據(jù)源產(chǎn)生,這些數(shù)據(jù)可能通過(guò)不同的虛擬信道進(jìn)行傳輸,但按照規(guī)定的格式進(jìn)行封裝,格式如表3所示。其中包長(zhǎng)為從副導(dǎo)頭的第一個(gè)字節(jié)開始至該源包未尾的總字節(jié)數(shù),實(shí)際長(zhǎng)度為包長(zhǎng)加1。
表3
圖1示出本發(fā)明實(shí)施例提供的一種解析包裝數(shù)據(jù)協(xié)議單元的方法的流程圖,如圖1所示,本方法從MPDU還原EPDU的處理主要包括:對(duì)多個(gè)多路協(xié)議數(shù)據(jù)單元MPDU數(shù)據(jù)進(jìn)行組幀的步驟和根據(jù)所述已組幀MPDU數(shù)據(jù)解析包裝數(shù)據(jù)協(xié)議單元EPDU數(shù)據(jù)的步驟,其中,對(duì)多個(gè)多路協(xié)議數(shù)據(jù)單元MPDU數(shù)據(jù)進(jìn)行組幀的步驟具體可以包括:
步驟S11、將接收到的第一個(gè)MPDU數(shù)據(jù)作為首幀MPDU數(shù)據(jù)進(jìn)行緩存。
器上MPDU的構(gòu)造是把CCSDS包格式的數(shù)據(jù)單元級(jí)聯(lián)在一起,直到超過(guò)MPDU數(shù)據(jù)區(qū)的長(zhǎng)度,任何超過(guò)MPDU數(shù)據(jù)區(qū)長(zhǎng)度的CCSDS包會(huì)被分割,即把MPDU填滿后,再把CCSDS包余下的部分填到虛擬信道的下一個(gè)新的MPDU中。如果用戶得不到足夠的業(yè)務(wù)數(shù)據(jù)單元,多路復(fù)用功能可以產(chǎn)生適當(dāng)長(zhǎng)度的填充包(格式為源包格式),填入MPDU中,最短的填充包長(zhǎng)度為7字節(jié)(6字節(jié)導(dǎo)頭,1字節(jié)填充數(shù)據(jù)),如果一個(gè)MPDU中所需的填充數(shù)據(jù)小于7字節(jié),則產(chǎn)生一個(gè)長(zhǎng)為7字節(jié)的填充包,此包填滿當(dāng)前的MPDU后,剩余部分填入下一個(gè)MPDU中。由設(shè)置的MPDU導(dǎo)頭域的首導(dǎo)頭指針指示出第一個(gè)完整的CCSDS包的位置,便于接收端提取MPDU包區(qū)的各個(gè)源包,實(shí)現(xiàn)包的分路。
根據(jù)MPDU格式設(shè)計(jì)緩存數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu)覆蓋MPDU格式所有屬性。對(duì)每個(gè)虛擬信道數(shù)據(jù)分別開辟緩存空間,將接收到的首個(gè)MPDU數(shù)據(jù)作為首幀數(shù)據(jù)進(jìn)行緩存。
步驟S12、根據(jù)所述首幀MPDU數(shù)據(jù)的虛擬信道計(jì)數(shù)值和后續(xù)接收的MPDU數(shù)據(jù)的虛擬信道計(jì)數(shù)值,計(jì)算所述后續(xù)接收的MPDU數(shù)據(jù)相對(duì)于所述首幀MPDU數(shù)據(jù)的幀間隔數(shù)。
后續(xù)接收的MPDU數(shù)據(jù),通過(guò)同類數(shù)據(jù)的數(shù)據(jù)下傳頻率、虛擬信道計(jì)數(shù)值,計(jì)算當(dāng)前MPDU相對(duì)首幀MPDU的幀間隔數(shù)。
步驟S13、根據(jù)所述幀間隔數(shù)確定所述后續(xù)接收的MPDU數(shù)據(jù)的緩存地址。
步驟S14、根據(jù)所述后續(xù)接收的MPDU數(shù)據(jù)的緩存地址,緩存所述后續(xù)的MPDU數(shù)據(jù)的信息,所述后續(xù)接收的MPDU數(shù)據(jù)的信息包括數(shù)據(jù)區(qū)、首導(dǎo)頭指針和測(cè)站時(shí)標(biāo),并將所述后續(xù)接收的MPDU數(shù)據(jù)標(biāo)記為已組幀MPDU數(shù)據(jù)。
確定當(dāng)前MPDU的緩存地址,緩存當(dāng)前MPDU的數(shù)據(jù)區(qū)、首導(dǎo)頭指針、測(cè)站時(shí)標(biāo)(或器上時(shí)間)等,如果MPDU為填充數(shù)據(jù),則將當(dāng)前MPDU數(shù)據(jù)標(biāo)識(shí)為“填充”。如果組幀過(guò)程中出現(xiàn)丟幀,則保留初始設(shè)置的“丟幀”標(biāo)志。
根據(jù)所述待組幀MPDU數(shù)據(jù)解析包裝數(shù)據(jù)協(xié)議單元EPDU數(shù)據(jù)的步驟,具體可以包括:
步驟S21、根據(jù)所述待組幀MPDU數(shù)據(jù)的首導(dǎo)頭指針,確定所述已組幀MPDU數(shù)據(jù)的源包的起始地址。
步驟S22、根據(jù)所述待組幀MPDU數(shù)據(jù)的數(shù)據(jù)區(qū)長(zhǎng)度、所述源包的長(zhǎng)度、有效數(shù)據(jù)組幀長(zhǎng)度及組幀標(biāo)志,從所述源包的起始地址開始,對(duì)已緩存的所述MPDU數(shù)據(jù)的有效數(shù)據(jù)進(jìn)行組幀。
步驟S23、當(dāng)待組幀MPDU數(shù)據(jù)長(zhǎng)度大于或等于所述EPDU數(shù)據(jù)的主導(dǎo)頭長(zhǎng)度與包長(zhǎng)加1之和時(shí),解析出所述EPDU數(shù)據(jù)。
在一種可能的實(shí)現(xiàn)方式中,如果滿足實(shí)時(shí)性要求,則進(jìn)行發(fā)送,否則對(duì)該EPDU數(shù)據(jù)進(jìn)行記盤;計(jì)算完整解析的MPDU數(shù)目,并清空其所占緩存。
本發(fā)明實(shí)施例提供的解析包裝數(shù)據(jù)協(xié)議單元的方法,對(duì)接收過(guò)程中未收到的數(shù)據(jù)標(biāo)識(shí)為丟幀。每次組幀后,對(duì)緩存中的數(shù)據(jù)進(jìn)行解析,跨過(guò)MPDU的填充幀,復(fù)原出獨(dú)立源包,直至遇到丟幀或不完整源包。在數(shù)據(jù)有丟幀時(shí),如果沒(méi)有超過(guò)數(shù)據(jù)時(shí)序容錯(cuò)性或?qū)崟r(shí)性要求,則等待接收下一個(gè)MPDU數(shù)據(jù);如果超過(guò)數(shù)據(jù)時(shí)序容錯(cuò)性,則跳過(guò)丟幀數(shù)據(jù),將其中完整的源包復(fù)原,如果不滿足實(shí)時(shí)性要求,則該源包只記盤不發(fā)送,如果滿足實(shí)時(shí)性,則發(fā)送該源包給相關(guān)專業(yè)進(jìn)行處理。由此,在時(shí)序混亂、丟幀、數(shù)據(jù)中斷情況下,保證MPDU數(shù)據(jù)組幀的正確性,也因此而保證了解析出的EPDU數(shù)據(jù)的正確性。
本發(fā)明實(shí)施例提供的解析包裝數(shù)據(jù)協(xié)議單元的方法,能夠?yàn)椴煌臄?shù)據(jù)幀頻、MPDU的數(shù)據(jù)長(zhǎng)度、EPDU格式,MPDU數(shù)據(jù)提供通用的組幀方法,能夠適應(yīng)于不同的數(shù)據(jù)幀頻、MPDU的數(shù)據(jù)長(zhǎng)度、EPDU的數(shù)據(jù)格式。
實(shí)施例2
圖2示出本發(fā)明另一實(shí)施例提供的一種解析包裝數(shù)據(jù)協(xié)議單元的方法的流程圖。在圖2中與圖1采用相同附圖標(biāo)記的步驟,均與圖1適用于相同的文字說(shuō)明,在此不再贅述。
在一種可能的實(shí)現(xiàn)方式中,在步驟S11之前,還可以包括:
步驟S31、根據(jù)第一公式計(jì)算最長(zhǎng)的所述EPDU數(shù)據(jù)所占的MPDU數(shù)據(jù)的幀數(shù)。
所述第一公式為:EpduMaxMpduNum=(MaxEpduLen/MpduDataLen+1)+1;
其中,EpduMaxMpduNum為最長(zhǎng)的所述EPDU數(shù)據(jù)所占的MPDU數(shù)據(jù)的幀數(shù),MaxEpduLen為最長(zhǎng)的EPDU數(shù)據(jù)的源包長(zhǎng)度,MpduDataLen為MPDU數(shù)據(jù)的數(shù)據(jù)區(qū)長(zhǎng)度。公式中的數(shù)字:第一個(gè)“1”為MaxEpduLen/MpduDataLen要向上取整;第二個(gè)“1”為EPDU向上取整的基礎(chǔ)上可能還會(huì)多占用一個(gè)MPDU。
數(shù)據(jù)時(shí)序混亂可能的最大幀數(shù),以MaxDisorderNum表示;以及所組幀MPDU數(shù)據(jù)最大的幀周期,以MaxFrameTime表示。對(duì)于MaxDisorderNum,可以將5作為亂序可能的最大值,一般不超過(guò)3。結(jié)合亂序程度以及數(shù)據(jù)實(shí)時(shí)性的要求,對(duì)于高頻數(shù)據(jù),MaxDisorderNum可以調(diào)大一些;低頻數(shù)據(jù),該值可以調(diào)小一些;非固定頻率數(shù)據(jù),按最高頻率設(shè)置。
確定當(dāng)前MPDU數(shù)據(jù)緩存位置主要分為以下幾種情況:
1)如果緩存為空,則分幀間隔數(shù)為0,將當(dāng)前MPDU數(shù)據(jù)區(qū)作為首幀MPDU存入緩存區(qū)。
2)如果緩存中已經(jīng)有首幀,則對(duì)當(dāng)前MPDU首先計(jì)算該幀MPDU與首幀MPDU的測(cè)站時(shí)標(biāo)差(或器上時(shí)差)。
3)如果時(shí)差超過(guò)最大時(shí)效范圍內(nèi),認(rèn)為當(dāng)前幀數(shù)據(jù)不能與緩存的數(shù)據(jù)進(jìn)行組幀,且緩存中數(shù)據(jù)已失效,例如上一次出站遺留的數(shù)據(jù),則清空當(dāng)前緩存,將當(dāng)前MPDU緩存為首幀。
4)如果緩存中已經(jīng)有首幀,且當(dāng)前MPDU與首幀MPDU的測(cè)站時(shí)標(biāo)差或器上時(shí)差在最大時(shí)效范圍內(nèi),但超出(MaxDisorderNum+EpduMaxMpduNum)*2*MaxFrameTime的時(shí)間范圍,則對(duì)緩存中數(shù)據(jù)進(jìn)行解析。在源包解包時(shí)如果遇到MPDU數(shù)據(jù)有丟幀,則舍棄不完整源包,將下一個(gè)“待組幀”的MPDU數(shù)據(jù)更新為緩存中的第一幀,繼續(xù)調(diào)用EPDU數(shù)據(jù)解包處理,直至緩存中待解析的MPDU幀數(shù)小于(MaxDisorderNum+EpduMaxMpduNum)*2個(gè),并清空已完整處理MPDU所占的緩存,并將下一個(gè)“待組幀”的MPDU數(shù)據(jù)更新為緩存首幀,繼續(xù)步驟4)。
如果緩存中已經(jīng)有首幀,則計(jì)算該幀MPDU與首幀MPDU的測(cè)站時(shí)標(biāo)差(或器上時(shí)差),如果時(shí)差未超出(MaxDisorderNum+EpduMaxMpduNum)*2*MaxFrameTime,則計(jì)算當(dāng)前幀相對(duì)首幀的幀間隔數(shù)(表示為MpduSubSeq)。
在一種可能的實(shí)現(xiàn)方式中,步驟S12具體可以包括:
根據(jù)第二公式計(jì)算所述后續(xù)接收的MPDU數(shù)據(jù)相對(duì)于所述首幀MPDU數(shù)據(jù)的幀間隔數(shù),所述第二公式為:MpduSubSeq=CurMpduVcduSeq-FirstMpduVcduSeq
其中,MpduSubSeq為所述后續(xù)接收的MPDU數(shù)據(jù)相對(duì)于所述首幀MPDU數(shù)據(jù)的幀間隔數(shù),CurMpduVcduSeq為所述后續(xù)接收的MPDU數(shù)據(jù)對(duì)應(yīng)的虛擬信道計(jì)數(shù),F(xiàn)irstMpduVcduSeq為所述首幀MPDU數(shù)據(jù)對(duì)應(yīng)的虛擬信道計(jì)數(shù)。
(1)如果MpduSubSeq值為正且小于或等于(MaxDisorderNum+EpduMaxMpduNum)*2,則將當(dāng)前MPDU的數(shù)據(jù)區(qū)數(shù)據(jù)存入相對(duì)首幀后第MpduSubSeq個(gè)分幀的位置。
(2)如果MpduSubSeq值為正且大于(MaxDisorderNum+EpduMaxMpduNum)*2,則當(dāng)前幀數(shù)據(jù)作為異常數(shù)據(jù)不處理,并將異常數(shù)據(jù)幀計(jì)數(shù)增1;判斷異常數(shù)據(jù)幀計(jì)數(shù)大于2,則轉(zhuǎn)入(6)。
(3)如果MpduSubSeq值為負(fù)且絕對(duì)值小于或等于(MaxDisorderNum+EpduMaxMpduNum)*2,則將當(dāng)前MPDU的數(shù)據(jù)區(qū)數(shù)據(jù)存入相對(duì)首幀往前第|MpduSubSeq|個(gè)分幀的位置,并將當(dāng)前幀更新為首幀。
(4)如果MpduSubSeq值為負(fù)且絕對(duì)值大于16777216-(MaxDisorderNum+EpduMaxMpduNum),則按公式3重新計(jì)算當(dāng)前MPDU相對(duì)首個(gè)MPDU的幀間隔數(shù),并將當(dāng)前MPDU的數(shù)據(jù)存入相對(duì)首幀往前第|MpduSubSeq|個(gè)分幀的位置。
公式3:MpduSubSeq=CurMpduVcduSeq–FirstMpduVcduSeq+16777216;
其中16777216為三字節(jié)虛擬信道計(jì)數(shù)的模。
(5)如果MpduSubSeq值為負(fù)且絕對(duì)值大于(MaxDisorderNum+EpduMaxMpduNum)*2且小于16777216-(MaxDisorderNum+EpduMaxMpduNum),則當(dāng)前幀數(shù)據(jù)作為異常數(shù)據(jù)不處理,并將異常數(shù)據(jù)幀計(jì)數(shù)增1。判斷異常數(shù)據(jù)幀計(jì)數(shù)大于2,則轉(zhuǎn)入(6)。
(6)調(diào)用EPDU數(shù)據(jù)解包處理,對(duì)緩存中的MPDU數(shù)據(jù)進(jìn)行處理,遇到MPDU數(shù)據(jù)丟幀情況,則舍棄不完整源包,將下一個(gè)“已組幀”的MPDU數(shù)據(jù)更新為緩存中的第一幀,繼續(xù)調(diào)用EPDU數(shù)據(jù)解包處理,直至無(wú)法解析出完整源包為止,并將首個(gè)待處理的MPDU更新為緩存中的首幀,再重新調(diào)用公式2計(jì)算當(dāng)前MPDU幀與更新后的第一幀數(shù)據(jù)的幀間隔,定位并緩存當(dāng)前幀的MPDU數(shù)據(jù)。
本發(fā)明實(shí)施例提供的解析包裝數(shù)據(jù)協(xié)議單元的方法,對(duì)接收過(guò)程中未收到的數(shù)據(jù)標(biāo)識(shí)為丟幀。每次組幀后,對(duì)緩存中的數(shù)據(jù)進(jìn)行解析,跨過(guò)MPDU的填充幀,復(fù)原出獨(dú)立源包,直至遇到丟幀或不完整源包。在數(shù)據(jù)有丟幀時(shí),如果沒(méi)有超過(guò)數(shù)據(jù)時(shí)序容錯(cuò)性或?qū)崟r(shí)性要求,則等待接收下一個(gè)MPDU數(shù)據(jù);如果超過(guò)數(shù)據(jù)時(shí)序容錯(cuò)性,則跳過(guò)丟幀數(shù)據(jù),將其中完整的源包復(fù)原,如果不滿足實(shí)時(shí)性要求,則該源包只記盤不發(fā)送,如果滿足實(shí)時(shí)性,則發(fā)送該源包給相關(guān)專業(yè)進(jìn)行處理。由此,在時(shí)序混亂、丟幀、數(shù)據(jù)中斷情況下,保證MPDU數(shù)據(jù)組幀的正確性,也因此而保證了解析出的EPDU數(shù)據(jù)的正確性。
本發(fā)明實(shí)施例提供的解析包裝數(shù)據(jù)協(xié)議單元的方法,能夠?yàn)椴煌臄?shù)據(jù)幀頻、MPDU的數(shù)據(jù)長(zhǎng)度、EPDU格式,MPDU數(shù)據(jù)提供通用的組幀方法,能夠適應(yīng)于不同的數(shù)據(jù)幀頻、MPDU的數(shù)據(jù)長(zhǎng)度、EPDU的數(shù)據(jù)格式。
每解包出一個(gè)EPDU后,需要更新以下幾項(xiàng)信息,換言之,在一種可能的實(shí)現(xiàn)方式中,步驟S23之后還可以包括:
步驟S41、根據(jù)第三公式,更新待解析的所述首幀MPDU數(shù)據(jù)的首導(dǎo)頭指針,所述第三公式為:NewFirstMpduStartAddr=(OldFirstMpduStartAddr+EpduHeadLen+EpduDataLen+1)%MpduDataLen;(%為取模運(yùn)算)
其中,NewFirstMpduStartAddr為待解析的所述首幀MPDU數(shù)據(jù)的首導(dǎo)頭指針,OldFirstMpduStartAddr為源包解析之前的所述首幀MPDU數(shù)據(jù)的首導(dǎo)頭指針,EpduDataLen為本次解析出的源包包長(zhǎng),EpduHeadLen為源包EPDU主導(dǎo)頭長(zhǎng)度,MpduDataLen為MPDU的數(shù)據(jù)區(qū)長(zhǎng)度。
在現(xiàn)有航空測(cè)控實(shí)踐中,跨幀處理數(shù)據(jù)時(shí)容易出現(xiàn)丟失EPDU數(shù)據(jù)的情況,本發(fā)明實(shí)施例通過(guò)更新首幀MPDU數(shù)據(jù)的首導(dǎo)頭指針,能夠有效避免跨幀數(shù)據(jù)處理中的丟幀問(wèn)題。
在一種可能的實(shí)現(xiàn)方式中,步驟S23之后還可以包括:步驟S42、根據(jù)第四公式,計(jì)算緩存中待處理的所述MPDU數(shù)據(jù)與更新后的所述首幀MPDU數(shù)據(jù)的最大幀間隔數(shù),所述第四公式為:
NewMaxMpduNum=OldMaxMpduNum-(OldFirstMpduStartAddr+EpduHeadLen+EpduDataLen+1+FillMpduNum*MpduDataLen)/MpduDataLen;
其中,NewMaxMpduNum為緩存中待處理的所述MPDU數(shù)據(jù)與更新后的所述首幀MPDU數(shù)據(jù)的最大幀間隔數(shù),OldMaxMpduNum為源包解析之前緩存中待處理的MPDU與首幀MPDU的最大幀間隔數(shù),F(xiàn)illMpduNum為解析過(guò)程中MPDU數(shù)據(jù)的填充數(shù)。
由此,本發(fā)明實(shí)施例提供的解析包裝數(shù)據(jù)協(xié)議單元的方法,能夠保證數(shù)據(jù)不超過(guò)最大緩存,滿足數(shù)據(jù)的實(shí)時(shí)性要求。
在一種可能的實(shí)現(xiàn)方式中,步驟S23之后還可以包括:步驟S43、根據(jù)第五公式,計(jì)算已經(jīng)完整處理的MPDU分幀數(shù)。
第五公式:ComDealMpduNum=OldMaxMpduNum-NewMaxMpduNum
ComDealMpduNum:已經(jīng)完整處理的MPDU分幀數(shù)。
實(shí)施例3
圖3示出本發(fā)明實(shí)施例提供的一種解析包裝數(shù)據(jù)協(xié)議單元的裝置的結(jié)構(gòu)示意圖,如圖3所示,該裝置10包括:組幀模塊110和解析模塊120。
組幀模塊110,用于對(duì)多路協(xié)議數(shù)據(jù)單元MPDU數(shù)據(jù)進(jìn)行組幀,所述組幀模塊110被配置為:將接收到的第一個(gè)MPDU數(shù)據(jù)作為首幀MPDU數(shù)據(jù)進(jìn)行緩存;根據(jù)所述首幀MPDU數(shù)據(jù)的虛擬信道計(jì)數(shù)值和后續(xù)接收的MPDU數(shù)據(jù)的虛擬信道計(jì)數(shù)值,計(jì)算所述后續(xù)接收的MPDU數(shù)據(jù)相對(duì)于所述首幀MPDU數(shù)據(jù)的幀間隔數(shù);根據(jù)所述幀間隔數(shù)確定所述后續(xù)接收的MPDU數(shù)據(jù)的緩存地址;根據(jù)所述后續(xù)接收的MPDU數(shù)據(jù)的緩存地址,緩存所述后續(xù)的MPDU數(shù)據(jù)的信息,所述后續(xù)接收的MPDU數(shù)據(jù)的信息包括數(shù)據(jù)區(qū)、首導(dǎo)頭指針和測(cè)站時(shí)標(biāo),并將所述后續(xù)接收的MPDU數(shù)據(jù)標(biāo)記為已組幀MPDU數(shù)據(jù)。具體實(shí)現(xiàn)步驟與上述步驟S11-S14類似,在此不再贅述。
解析模塊120,用于根據(jù)所述已組幀MPDU數(shù)據(jù)解析包裝數(shù)據(jù)協(xié)議單元EPDU數(shù)據(jù),所述解析模塊120被配置為:根據(jù)所述已組幀MPDU數(shù)據(jù)的首導(dǎo)頭指針,確定所述已組幀MPDU數(shù)據(jù)的源包的起始地址;根據(jù)所述已組幀MPDU數(shù)據(jù)的數(shù)據(jù)區(qū)長(zhǎng)度、所述源包的長(zhǎng)度、有效數(shù)據(jù)組幀長(zhǎng)度及組幀標(biāo)志,從所述源包的起始地址開始,對(duì)已緩存的所述MPDU數(shù)據(jù)的有效數(shù)據(jù)進(jìn)行組幀;以及當(dāng)已組幀MPDU數(shù)據(jù)長(zhǎng)度大于或等于所述EPDU數(shù)據(jù)的主導(dǎo)頭長(zhǎng)度與包長(zhǎng)加1之和時(shí),解析出所述EPDU數(shù)據(jù)。具體實(shí)現(xiàn)步驟與上述步驟S21-S23類似,在此不再贅述。
本發(fā)明實(shí)施例提供的解析包裝數(shù)據(jù)協(xié)議單元的裝置,對(duì)接收過(guò)程中未收到的數(shù)據(jù)標(biāo)識(shí)為丟幀。每次組幀后,對(duì)緩存中的數(shù)據(jù)進(jìn)行解析,跨過(guò)MPDU的填充幀,復(fù)原出獨(dú)立源包,直至遇到丟幀或不完整源包。在數(shù)據(jù)有丟幀時(shí),如果沒(méi)有超過(guò)數(shù)據(jù)時(shí)序容錯(cuò)性或?qū)崟r(shí)性要求,則等待接收下一個(gè)MPDU數(shù)據(jù);如果超過(guò)數(shù)據(jù)時(shí)序容錯(cuò)性,則跳過(guò)丟幀數(shù)據(jù),將其中完整的源包復(fù)原,如果不滿足實(shí)時(shí)性要求,則該源包只記盤不發(fā)送,如果滿足實(shí)時(shí)性,則發(fā)送該源包給相關(guān)專業(yè)進(jìn)行處理。由此,在時(shí)序混亂、丟幀、數(shù)據(jù)中斷情況下,保證MPDU數(shù)據(jù)組幀的正確性,也因此而保證了解析出的EPDU數(shù)據(jù)的正確性。
本發(fā)明實(shí)施例提供的解析包裝數(shù)據(jù)協(xié)議單元的方法,能夠?yàn)椴煌臄?shù)據(jù)幀頻、MPDU的數(shù)據(jù)長(zhǎng)度、EPDU格式,MPDU數(shù)據(jù)提供通用的組幀方法,能夠適應(yīng)于不同的數(shù)據(jù)幀頻、MPDU的數(shù)據(jù)長(zhǎng)度、EPDU的數(shù)據(jù)格式。
實(shí)施例4
圖4示出本發(fā)明另一實(shí)施例提供的一種解析包裝數(shù)據(jù)協(xié)議單元的裝置的結(jié)構(gòu)示意圖,如圖4所示,在一種可能的實(shí)現(xiàn)方式中,該裝置10還包括:計(jì)算模塊130,用于在所述對(duì)多個(gè)多路協(xié)議數(shù)據(jù)單元MPDU數(shù)據(jù)進(jìn)行組幀之前,根據(jù)第一公式計(jì)算最長(zhǎng)的所述EPDU數(shù)據(jù)所占的MPDU數(shù)據(jù)的幀數(shù),所述第一公式為:
EpduMaxMpduNum=(MaxEpduLen/MpduDataLen+1)+1;
其中,EpduMaxMpduNum為最長(zhǎng)的所述EPDU數(shù)據(jù)所占的MPDU數(shù)據(jù)的幀數(shù),MaxEpduLen為最長(zhǎng)的EPDU數(shù)據(jù)的源包長(zhǎng)度,MpduDataLen為MPDU數(shù)據(jù)的數(shù)據(jù)區(qū)長(zhǎng)度。
在一種可能的實(shí)現(xiàn)方式中,組幀模塊110還用于:根據(jù)第二公式計(jì)算所述后續(xù)接收的MPDU數(shù)據(jù)相對(duì)于所述首幀MPDU數(shù)據(jù)的幀間隔數(shù),所述第二公式為:MpduSubSeq=CurMpduVcduSeq-FirstMpduVcduSeq
其中,MpduSubSeq為所述后續(xù)接收的MPDU數(shù)據(jù)相對(duì)于所述首幀MPDU數(shù)據(jù)的幀間隔數(shù),CurMpduVcduSeq為所述后續(xù)接收的MPDU數(shù)據(jù)對(duì)應(yīng)的虛擬信道計(jì)數(shù),F(xiàn)irstMpduVcduSeq為所述首幀MPDU數(shù)據(jù)對(duì)應(yīng)的虛擬信道計(jì)數(shù)。
本發(fā)明實(shí)施例提供的解析包裝數(shù)據(jù)協(xié)議單元的裝置,對(duì)接收過(guò)程中未收到的數(shù)據(jù)標(biāo)識(shí)為丟幀。每次組幀后,對(duì)緩存中的數(shù)據(jù)進(jìn)行解析,跨過(guò)MPDU的填充幀,復(fù)原出獨(dú)立源包,直至遇到丟幀或不完整源包。在數(shù)據(jù)有丟幀時(shí),如果沒(méi)有超過(guò)數(shù)據(jù)時(shí)序容錯(cuò)性或?qū)崟r(shí)性要求,則等待接收下一個(gè)MPDU數(shù)據(jù);如果超過(guò)數(shù)據(jù)時(shí)序容錯(cuò)性,則跳過(guò)丟幀數(shù)據(jù),將其中完整的源包復(fù)原,如果不滿足實(shí)時(shí)性要求,則該源包只記盤不發(fā)送,如果滿足實(shí)時(shí)性,則發(fā)送該源包給相關(guān)專業(yè)進(jìn)行處理。由此,在時(shí)序混亂、丟幀、數(shù)據(jù)中斷情況下,保證MPDU數(shù)據(jù)組幀的正確性,也因此而保證了解析出的EPDU數(shù)據(jù)的正確性。
本發(fā)明實(shí)施例提供的解析包裝數(shù)據(jù)協(xié)議單元的方法,能夠?yàn)椴煌臄?shù)據(jù)幀頻、MPDU的數(shù)據(jù)長(zhǎng)度、EPDU格式,MPDU數(shù)據(jù)提供通用的組幀方法,能夠適應(yīng)于不同的數(shù)據(jù)幀頻、MPDU的數(shù)據(jù)長(zhǎng)度、EPDU的數(shù)據(jù)格式。
在一種可能的實(shí)現(xiàn)方式中,計(jì)算模塊130還用于在解析出所述EPDU數(shù)據(jù)之后,根據(jù)第三公式,更新待解析的所述首幀MPDU數(shù)據(jù)的首導(dǎo)頭指針,所述第三公式為:NewFirstMpduStartAddr=(OldFirstMpduStartAddr+EpduHeadLen+EpduDataLen+1)%MpduDataLen;
其中,NewFirstMpduStartAddr為待解析的所述首幀MPDU數(shù)據(jù)的首導(dǎo)頭指針,OldFirstMpduStartAddr為源包解析之前的所述首幀MPDU數(shù)據(jù)的首導(dǎo)頭指針,EpduDataLen為本次解析出的源包包長(zhǎng),EpduHeadLen為源包EPDU主導(dǎo)頭長(zhǎng)度,MpduDataLen為MPDU的數(shù)據(jù)區(qū)長(zhǎng)度。
在現(xiàn)有航空測(cè)控實(shí)踐中,跨幀處理數(shù)據(jù)時(shí)容易出現(xiàn)丟失EPDU數(shù)據(jù)的情況,本發(fā)明實(shí)施例通過(guò)更新首幀MPDU數(shù)據(jù)的首導(dǎo)頭指針,能夠有效避免跨幀數(shù)據(jù)處理中的丟幀問(wèn)題。
在一種可能的實(shí)現(xiàn)方式中,計(jì)算模塊130還用于在解析出所述EPDU數(shù)據(jù)之后,根據(jù)第四公式,計(jì)算緩存中待處理的所述MPDU數(shù)據(jù)與更新后的所述首幀MPDU數(shù)據(jù)的最大幀間隔數(shù),所述第四公式為:
NewMaxMpduNum=OldMaxMpduNum-(OldFirstMpduStartAddr+EpduHeadLen+EpduDataLen+1+FillMpduNum*MpduDataLen)/MpduDataLen;
其中,NewMaxMpduNum為緩存中待處理的所述MPDU數(shù)據(jù)與更新后的所述首幀MPDU數(shù)據(jù)的最大幀間隔數(shù),OldMaxMpduNum為源包解析之前緩存中待處理的MPDU與首幀MPDU的最大幀間隔數(shù),F(xiàn)illMpduNum為解析過(guò)程中MPDU數(shù)據(jù)的填充數(shù)。
由此,本發(fā)明實(shí)施例提供的解析包裝數(shù)據(jù)協(xié)議單元的方法,能夠保證數(shù)據(jù)不超過(guò)最大緩存,滿足數(shù)據(jù)的實(shí)時(shí)性要求。
本領(lǐng)域普通技術(shù)人員可以意識(shí)到,本文所描述的實(shí)施例中的各示例性單元及算法步驟,能夠以電子硬件、或者計(jì)算機(jī)軟件和電子硬件的結(jié)合來(lái)實(shí)現(xiàn)。這些功能究竟以硬件還是軟件形式來(lái)實(shí)現(xiàn),取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以針對(duì)特定的應(yīng)用選擇不同的方法來(lái)實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
如果以計(jì)算機(jī)軟件的形式來(lái)實(shí)現(xiàn)所述功能并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),則在一定程度上可認(rèn)為本發(fā)明的技術(shù)方案的全部或部分(例如對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分)是以計(jì)算機(jī)軟件產(chǎn)品的形式體現(xiàn)的。該計(jì)算機(jī)軟件產(chǎn)品通常存儲(chǔ)在計(jì)算機(jī)可讀取的非易失性存儲(chǔ)介質(zhì)中,包括若干指令用以使得計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī)、服務(wù)器、或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各實(shí)施例方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括U盤、移動(dòng)硬盤、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。