本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種移動(dòng)終端及數(shù)據(jù)包傳輸方法。
背景技術(shù):
隨著移動(dòng)通信技術(shù)的發(fā)展,越來(lái)越多的移動(dòng)終端如智能手機(jī)具有雙卡雙通的功能,使得用戶(hù)在實(shí)現(xiàn)語(yǔ)音業(yè)務(wù)的待機(jī)同時(shí),能建立數(shù)據(jù)業(yè)務(wù)連接。移動(dòng)終端通常具有兩個(gè)用戶(hù)識(shí)別卡以及分別與所述兩個(gè)用戶(hù)識(shí)別卡連接的調(diào)制解調(diào)器,兩個(gè)用戶(hù)識(shí)別卡全開(kāi)時(shí),一個(gè)用戶(hù)識(shí)別卡(sim1)可以使用4g(the4thgenerationmobilecommunicationtechnology,第四代移動(dòng)通信技術(shù)),例如lte(longtermevolution,長(zhǎng)期演進(jìn)技術(shù))網(wǎng)絡(luò),另一個(gè)用戶(hù)識(shí)別卡(sim2)僅能使用2g(2-generationwirelesstelephonetechnology,第二代手機(jī)通信技術(shù)規(guī)格)或3g(3rdgeneration,第三代移動(dòng)通信技術(shù))網(wǎng)絡(luò),sim2不能上4g的原因主要是:移動(dòng)終端只有一套射頻,兩張卡使用該套射頻是分時(shí)復(fù)用的關(guān)系,并不能同時(shí)占用,由于兩張卡全開(kāi)時(shí),只有一張卡可以使用4g網(wǎng)絡(luò),另一張卡只能使用2g或3g網(wǎng)絡(luò),導(dǎo)致移動(dòng)終端中數(shù)據(jù)傳輸?shù)男瘦^低。
因此,為了使移動(dòng)終端可以支持雙lte,以提高數(shù)據(jù)傳輸效率,移動(dòng)終端可內(nèi)置兩個(gè)處理芯片,每個(gè)處理芯片對(duì)應(yīng)一個(gè)調(diào)制解調(diào)器,以使移動(dòng)終端的兩張sim卡連接不同的調(diào)制解調(diào)器,從而實(shí)現(xiàn)雙lte通信功能。但是,當(dāng)移動(dòng)終端中的用戶(hù)識(shí)別卡是電信卡時(shí),由于電信卡一般都大于調(diào)制解調(diào)器之間數(shù)據(jù)傳輸?shù)腷uffer的容量值,因此buffer無(wú)法緩存一個(gè)完整的數(shù)據(jù)包,若是直接進(jìn)行數(shù)據(jù)傳輸,容易導(dǎo)致移動(dòng)終端死機(jī)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的主要目的在于提出一種移動(dòng)終端及數(shù)據(jù)包傳輸方法,旨在解決現(xiàn)有的數(shù)據(jù)包傳輸方式,容易導(dǎo)致移動(dòng)終端死機(jī)的技術(shù)問(wèn)題。
為實(shí)現(xiàn)上述目的,本發(fā)明提供的一種移動(dòng)終端,所述移動(dòng)終端包括基于預(yù)設(shè)接口連接的第一處理芯片和第二處理芯片、與所述第一處理芯片連接的第一射頻模塊、以及與所述第二處理芯片連接的第二射頻模塊,所述第一處理芯片包括內(nèi)嵌有虛擬用戶(hù)識(shí)別卡的第一應(yīng)用處理器以及與第一用戶(hù)識(shí)別卡和第二用戶(hù)識(shí)別卡連接的第一調(diào)制解調(diào)器,所述第二處理芯片包括第二應(yīng)用處理器和第二調(diào)制解調(diào)器;
第一調(diào)制解調(diào)器,用于通過(guò)預(yù)設(shè)接口接收第二調(diào)制解調(diào)器發(fā)送的數(shù)據(jù)包獲取請(qǐng)求時(shí),從虛擬用戶(hù)識(shí)別卡中提取所述數(shù)據(jù)包獲取請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)包;對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮;將壓縮后的數(shù)據(jù)包緩存至所述預(yù)設(shè)接口的臨時(shí)緩沖區(qū)buffer中,以供第二調(diào)制解調(diào)器從所述buffer中提取壓縮后的數(shù)據(jù)包,以完成數(shù)據(jù)包的傳輸。
可選地,所述第一調(diào)制解調(diào)器,還用于判斷能否從所述數(shù)據(jù)包獲取請(qǐng)求中提取出第二調(diào)制解調(diào)器添加的壓縮標(biāo)識(shí);若能提取出壓縮標(biāo)識(shí),則對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮。
可選地,所述第一調(diào)制解調(diào)器,還用于對(duì)提取的所述數(shù)據(jù)包進(jìn)行解析,以得到所述數(shù)據(jù)包的包頭;基于所述數(shù)據(jù)包的包頭確定所述數(shù)據(jù)包的長(zhǎng)度;在所述數(shù)據(jù)包的長(zhǎng)度大于預(yù)設(shè)閾值時(shí),則對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮。
可選地,所述第一調(diào)制解調(diào)器對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮具體包括:
所述第一調(diào)制解調(diào)器獲取所述數(shù)據(jù)包對(duì)應(yīng)的源文本;
確定源文本中出現(xiàn)頻率大于預(yù)設(shè)頻率的字符段;
在預(yù)設(shè)字典列表中,查找所述字符段對(duì)應(yīng)的編碼,其中,編碼的長(zhǎng)度小于對(duì)應(yīng)的字符段的長(zhǎng)度;
通過(guò)查找的編碼代替對(duì)應(yīng)的字符段,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。
可選地,所述第一調(diào)制解調(diào)器還用于,確定源文本中是否存在內(nèi)容相同且長(zhǎng)度大于預(yù)設(shè)值的字符段;
若存在,確定后一個(gè)字符段與前一個(gè)字符端的距離以及所述字符段的長(zhǎng)度;
采用距離與長(zhǎng)度的標(biāo)識(shí)代替后一個(gè)字符段,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。
此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提供一種數(shù)據(jù)包傳輸方法,所述數(shù)據(jù)包傳輸方法應(yīng)用于移動(dòng)終端,所述移動(dòng)終端包括基于預(yù)設(shè)接口連接的第一處理芯片和第二處理芯片、與所述第一處理芯片連接的第一射頻模塊、以及與所述第二處理芯片連接的第二射頻模塊,所述第一處理芯片包括內(nèi)嵌有虛擬用戶(hù)識(shí)別卡的第一應(yīng)用處理器以及與第一用戶(hù)識(shí)別卡和第二用戶(hù)識(shí)別卡連接的第一調(diào)制解調(diào)器,所述第二處理芯片包括第二應(yīng)用處理器和第二調(diào)制解調(diào)器,所述方法包括:
第一調(diào)制解調(diào)器通過(guò)預(yù)設(shè)接口接收第二調(diào)制解調(diào)器發(fā)送的數(shù)據(jù)包獲取請(qǐng)求時(shí),從虛擬用戶(hù)識(shí)別卡中提取所述數(shù)據(jù)包獲取請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)包;
對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮;
將壓縮后的數(shù)據(jù)包緩存至所述預(yù)設(shè)接口的臨時(shí)緩沖區(qū)buffer中,以供第二調(diào)制解調(diào)器從所述buffer中提取壓縮后的數(shù)據(jù)包,以完成數(shù)據(jù)包的傳輸。
可選地,所述對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮的步驟之前,所述數(shù)據(jù)包傳輸方法還包括:
所述第一調(diào)制解調(diào)器判斷能否從所述數(shù)據(jù)包獲取請(qǐng)求中提取出第二調(diào)制解調(diào)器添加的壓縮標(biāo)識(shí);
若能提取出壓縮標(biāo)識(shí),則執(zhí)行所述對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮的步驟。
可選地,所述對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮的步驟之前,所述數(shù)據(jù)包傳輸方法還包括:
所述第一調(diào)制解調(diào)器對(duì)提取的所述數(shù)據(jù)包進(jìn)行解析,以得到所述數(shù)據(jù)包的包頭;
基于所述數(shù)據(jù)包的包頭確定所述數(shù)據(jù)包的長(zhǎng)度;
在所述數(shù)據(jù)包的長(zhǎng)度大于預(yù)設(shè)閾值時(shí),執(zhí)行所述對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮的步驟。
可選地,所述對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮的步驟包括:
所述第一調(diào)制解調(diào)器獲取所述數(shù)據(jù)包對(duì)應(yīng)的源文本;
確定源文本中出現(xiàn)頻率大于預(yù)設(shè)頻率的字符段;
在預(yù)設(shè)字典列表中,查找所述字符段對(duì)應(yīng)的編碼,其中,編碼的長(zhǎng)度小于對(duì)應(yīng)的字符段的長(zhǎng)度;
通過(guò)查找的編碼代替對(duì)應(yīng)的字符段,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。
可選地,所述第一調(diào)制解調(diào)器獲取所述數(shù)據(jù)包對(duì)應(yīng)的源文本的步驟之后,所述對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮的步驟還包括:
確定源文本中是否存在內(nèi)容相同且長(zhǎng)度大于預(yù)設(shè)值的字符段;
若存在,確定后一個(gè)字符段與前一個(gè)字符端的距離以及所述字符段的長(zhǎng)度;
采用距離與長(zhǎng)度的標(biāo)識(shí)代替后一個(gè)字符段,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。
本發(fā)明提出的技術(shù)方案,所述移動(dòng)終端包括基于預(yù)設(shè)接口連接的第一處理芯片和第二處理芯片、與所述第一處理芯片連接的第一射頻模塊、以及與所述第二處理芯片連接的第二射頻模塊,所述第一處理芯片包括內(nèi)嵌有虛擬用戶(hù)識(shí)別卡的第一應(yīng)用處理器以及與第一用戶(hù)識(shí)別卡和第二用戶(hù)識(shí)別卡連接的第一調(diào)制解調(diào)器,所述第二處理芯片包括第二應(yīng)用處理器和第二調(diào)制解調(diào)器;第一調(diào)制解調(diào)器通過(guò)預(yù)設(shè)接口接收第二調(diào)制解調(diào)器發(fā)送的數(shù)據(jù)包獲取請(qǐng)求時(shí),先從虛擬用戶(hù)識(shí)別卡中提取所述數(shù)據(jù)包獲取請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)包,然后對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮,再將壓縮后的數(shù)據(jù)包緩存至所述預(yù)設(shè)接口的buffer中,以供第二調(diào)制解調(diào)器從所述buffer中提取壓縮后的數(shù)據(jù)包,以完成數(shù)據(jù)包的傳輸。本方案在傳輸數(shù)據(jù)包時(shí),先對(duì)待傳輸?shù)臄?shù)據(jù)包進(jìn)行壓縮,再將壓縮后的數(shù)據(jù)包進(jìn)行傳輸,使得傳輸?shù)臄?shù)據(jù)包的容量值有所減小,避免了數(shù)據(jù)傳輸過(guò)程中移動(dòng)終端死機(jī)的情況。
附圖說(shuō)明
圖1為本發(fā)明一實(shí)施例的lte網(wǎng)絡(luò)架構(gòu)的示意圖;
圖2為本發(fā)明實(shí)施例中移動(dòng)終端的一種硬件結(jié)構(gòu)示意圖;
圖3為本發(fā)明第一調(diào)制解調(diào)器和第二調(diào)制解調(diào)器之間的交互示意圖;
圖4為本發(fā)明數(shù)據(jù)包傳輸方法第一實(shí)施例的流程示意圖。
本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做說(shuō)明。
具體實(shí)施方式
應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。需要說(shuō)明的是,在不沖突的情況下,本發(fā)明中的實(shí)施例及實(shí)施例中的特征可以相互任意結(jié)合。
為了對(duì)本發(fā)明的技術(shù)特征、目的和效果有更加清楚的理解,現(xiàn)對(duì)照附圖詳細(xì)說(shuō)明本發(fā)明的具體實(shí)施方式。
圖1是本發(fā)明一實(shí)施例的lte網(wǎng)絡(luò)架構(gòu)的示意圖。本發(fā)明一實(shí)施例的lte網(wǎng)絡(luò)架構(gòu)包括:一個(gè)或多個(gè)移動(dòng)終端(userequipment,ue)100、e-utran(evolvedumtsterrestrialradioaccessnetwork,演進(jìn)的umts陸地?zé)o線(xiàn)接入網(wǎng))(圖中未標(biāo)號(hào))、演進(jìn)分組核心(epc)(圖中未標(biāo)號(hào))、歸屬訂戶(hù)服務(wù)器(hss)107、網(wǎng)絡(luò)(例如,因特網(wǎng))(圖中未標(biāo)號(hào))以及電路交換系統(tǒng)(圖中未標(biāo)號(hào))。
e-utran包括演進(jìn)b節(jié)點(diǎn)(enodeb)101和其它enodeb102。enodeb101提供朝向移動(dòng)終端100的用戶(hù)面和控制面的協(xié)議終接。enodeb101可經(jīng)由x2接口連接到其他enodeb。enodeb101也可稱(chēng)為基站、基收發(fā)機(jī)站、無(wú)線(xiàn)電基站、無(wú)線(xiàn)電收發(fā)機(jī)、收發(fā)機(jī)功能、基本服務(wù)集、擴(kuò)展服務(wù)集、或其他某個(gè)合適的術(shù)語(yǔ)。enodeb101為移動(dòng)終端100提供去往epc的接入點(diǎn)。
enodeb101通過(guò)s1接口連接到epc。epc包括移動(dòng)管理實(shí)體(eem)104、其他移動(dòng)管理實(shí)體106、服務(wù)網(wǎng)關(guān)103,以及分組數(shù)據(jù)網(wǎng)絡(luò)(pdn)網(wǎng)關(guān)105。移動(dòng)管理實(shí)體104是處理移動(dòng)終端100與epc之間的信令的控制節(jié)點(diǎn)。移動(dòng)管理實(shí)體104提供承載和連接管理。所有用戶(hù)ip分組通過(guò)服務(wù)網(wǎng)關(guān)103來(lái)傳遞,服務(wù)網(wǎng)關(guān)103自身連接到pdn網(wǎng)關(guān)105。pdn網(wǎng)關(guān)105提供ueip地址分配以及其他功能。pdn網(wǎng)關(guān)105連接到網(wǎng)絡(luò),例如,因特網(wǎng)。
電路交換系統(tǒng)包括交互解決方案模塊(iws)108、移動(dòng)交換中心(msc)109、基站110和移動(dòng)站111。在一個(gè)方面,電路交換系統(tǒng)可以通過(guò)iws和mme(mobilitymanagemententity,移動(dòng)管理實(shí)體)與eps(evolvedpacketsystem,演進(jìn)的分組系統(tǒng))進(jìn)行通信。
圖2為本發(fā)明實(shí)施例中移動(dòng)終端100的一種硬件結(jié)構(gòu)示意圖。
在本發(fā)明實(shí)施例中,移動(dòng)終端100包括第一處理芯片001和第二處理芯片002,與所述第一處理芯片001連接的第一射頻模塊12、以及與所述第二處理芯片002連接的第二射頻模塊22。其中,第一處理芯片001和第二處理芯片002通過(guò)預(yù)設(shè)接口連接。所述預(yù)設(shè)接口包括第一預(yù)設(shè)接口和第二預(yù)設(shè)接口。第一處理芯片001包括內(nèi)嵌有虛擬用戶(hù)識(shí)別卡10a的第一應(yīng)用處理器(applicationprocessor,用ap1表示)10、與第一用戶(hù)識(shí)別卡13和第二用戶(hù)識(shí)別卡14連接的第一調(diào)制解調(diào)器11(modem1)、rpm(resourcepowermanager,資源電源管理器)15。第二處理芯片002包括第二應(yīng)用處理器20和第二調(diào)制解調(diào)器(modem2)21。其中,虛擬用戶(hù)識(shí)別卡10a包括存儲(chǔ)模塊和虛擬片內(nèi)操作系統(tǒng)(virtualchipoperatingsystem,vcos),該存儲(chǔ)模塊可為efs(encryptingfilesystem,加密文件系統(tǒng)),存儲(chǔ)模塊用于存儲(chǔ)虛擬用戶(hù)識(shí)別卡10a的鑒權(quán)數(shù)據(jù)。用戶(hù)識(shí)別卡(第一用戶(hù)識(shí)別卡13和第二用戶(hù)識(shí)別卡14)為sim(subscriberidentitymodule,用戶(hù)識(shí)別模塊)卡。
第一應(yīng)用處理器10和第二應(yīng)用處理器20的內(nèi)部框架包括應(yīng)用層、框架層等,可處理復(fù)雜的邏輯操作以及進(jìn)行任務(wù)分配等。在本發(fā)明實(shí)施例中,應(yīng)用處理器指android操作系統(tǒng),以及基于android操作系統(tǒng)的各種apk(androidpackage,安卓安裝包)。
在本發(fā)明的實(shí)施例中,第一應(yīng)用處理器10和第二應(yīng)用處理器20通過(guò)第一預(yù)設(shè)接口實(shí)現(xiàn)連接,為用戶(hù)提供交互接口,將用戶(hù)輸入的操作指令(例如,用戶(hù)通過(guò)用戶(hù)界面輸入的有關(guān)啟動(dòng)視頻通話(huà)的操作指令)傳輸給第一調(diào)制解調(diào)器11或第二調(diào)制解調(diào)器21,以實(shí)現(xiàn)兩個(gè)應(yīng)用處理器之間數(shù)據(jù)的定義與傳遞,例如,進(jìn)行兩個(gè)應(yīng)用處理器的休眠、喚醒、同步的控制、開(kāi)關(guān)機(jī)時(shí)芯片啟動(dòng)順序的控制等。其中,第一預(yù)設(shè)接口為usb(universalserialbus,通用串行總線(xiàn))。應(yīng)當(dāng)理解的是,在本發(fā)明實(shí)施例中,usb數(shù)據(jù)線(xiàn)復(fù)用出兩條數(shù)據(jù)通道,分別用于第一應(yīng)用處理器10和第二應(yīng)用處理器20之間用戶(hù)數(shù)據(jù)和控制信令數(shù)據(jù)的交互,即第一應(yīng)用處理器10和第二應(yīng)用處理器20通過(guò)usb數(shù)據(jù)線(xiàn)傳輸?shù)臄?shù)據(jù)包括上述兩種數(shù)據(jù)。其中,用戶(hù)數(shù)據(jù)包括上網(wǎng)產(chǎn)生的數(shù)據(jù),圖片和聊天信息數(shù)據(jù);控制信令數(shù)據(jù)包括開(kāi)關(guān)機(jī)的控制數(shù)據(jù),開(kāi)關(guān)飛行模式的控制數(shù)據(jù),顯示狀態(tài)信號(hào)的控制數(shù)據(jù)。
本實(shí)施例中,第一應(yīng)用處理器10和第二應(yīng)用處理器20通過(guò)otg(on-the-go)技術(shù)進(jìn)行數(shù)據(jù)交互。通過(guò)otg技術(shù),移動(dòng)終端100中的第一調(diào)制解調(diào)器11可通過(guò)第一用戶(hù)識(shí)別卡13中的sim卡參數(shù)來(lái)接入enodeb101,第二調(diào)制解調(diào)器21可通過(guò)第二用戶(hù)識(shí)別卡14中的sim卡參數(shù)來(lái)接入enodeb101;或者第一調(diào)制解調(diào)器11通過(guò)第二用戶(hù)識(shí)別卡14中的sim卡參數(shù)來(lái)接入enodeb101,第二調(diào)制解調(diào)器21通過(guò)第一用戶(hù)識(shí)別卡13中的sim卡參數(shù)來(lái)接入enodeb101。sim卡參數(shù)包括但不限于sim卡鑒權(quán)數(shù)據(jù)。當(dāng)然,還可以用虛擬用戶(hù)識(shí)別卡10a代替上述的第一用戶(hù)識(shí)別卡13或第二用戶(hù)識(shí)別卡14以實(shí)現(xiàn)相應(yīng)的功能。
第一調(diào)制解調(diào)器11和第二調(diào)制解調(diào)器21通過(guò)第二預(yù)設(shè)接口連接。在本發(fā)明實(shí)施例中,第二預(yù)設(shè)接口為uart(universalasynchronousreceiver/transmitter,通用異步收發(fā)傳輸器)。uart用于第一調(diào)制解調(diào)器11和第二調(diào)制解調(diào)器21之間sim卡參數(shù)的傳輸。其中,uart接口的buffer存在于第一調(diào)制解調(diào)器11和第二調(diào)制解調(diào)器21的兩端,用buffer1和buffer2表示。需要說(shuō)明的是,buffer1和buffer2對(duì)應(yīng)著同一個(gè)物理地址,通過(guò)該物理地址,可控制buffer1和buffer2容量值和狀態(tài)的同步變化。
具體地:第二調(diào)制解調(diào)器21通過(guò)第二射頻模塊22接收到基站發(fā)送的sim卡數(shù)據(jù)獲取請(qǐng)求時(shí),將數(shù)據(jù)獲取請(qǐng)求傳送至第一調(diào)制解調(diào)器11中,由第一調(diào)制解調(diào)器11反饋?lái)憫?yīng)的sim卡數(shù)據(jù)。
其中,所述sim卡數(shù)據(jù)獲取請(qǐng)求的觸發(fā)方式包括兩種:
a、第二調(diào)制解調(diào)器21主動(dòng)注冊(cè)lte網(wǎng)絡(luò),以觸發(fā)sim卡數(shù)據(jù)獲取請(qǐng)求;
b、基站側(cè)需要鑒權(quán)用戶(hù)是否合法,將鑒權(quán)請(qǐng)求發(fā)給第二調(diào)制解調(diào)器21,由第二調(diào)制解調(diào)器21主動(dòng)發(fā)sim卡數(shù)據(jù)獲取請(qǐng)求。
第二調(diào)制解調(diào)器21通過(guò)第二射頻模塊22接收到基站發(fā)送的sim卡數(shù)據(jù)獲取請(qǐng)求時(shí),通過(guò)uart將數(shù)據(jù)獲取請(qǐng)求傳送至第一調(diào)制解調(diào)器11中,由第一調(diào)制解調(diào)器11根據(jù)數(shù)據(jù)獲取請(qǐng)求從虛擬用戶(hù)識(shí)別卡10a、第一用戶(hù)識(shí)別卡13或第二用戶(hù)識(shí)別卡14獲取數(shù)據(jù),下文以第一調(diào)制解調(diào)器11根據(jù)數(shù)據(jù)獲取請(qǐng)求從第一用戶(hù)識(shí)別卡13中獲取數(shù)據(jù)為例進(jìn)行詳述。
需要理解的是,第一用戶(hù)識(shí)別卡13中包括有cos(chipoperatingsystem,片內(nèi)操作系統(tǒng))操作系統(tǒng)和存儲(chǔ)模塊,其中,所述cos操作系統(tǒng)作為存儲(chǔ)模塊的文件代理,根據(jù)所述第一調(diào)制解調(diào)器11發(fā)送的數(shù)據(jù)獲取請(qǐng)求從所述存儲(chǔ)模塊中提取數(shù)據(jù),所述存儲(chǔ)模塊用來(lái)存儲(chǔ)數(shù)據(jù)。即,本發(fā)明實(shí)施例中,第一調(diào)制解調(diào)器11是無(wú)法與第一用戶(hù)識(shí)別卡13內(nèi)部的存儲(chǔ)模塊進(jìn)行交互以獲取數(shù)據(jù),只能通過(guò)cos操作系統(tǒng)進(jìn)行獲取。因此,當(dāng)所述第一調(diào)制解調(diào)器11將數(shù)據(jù)獲取請(qǐng)求發(fā)送至第一用戶(hù)識(shí)別卡13時(shí),第一用戶(hù)識(shí)別卡13內(nèi)部的cos操作系統(tǒng)解析出所述數(shù)據(jù)獲取請(qǐng)求的地址信息,然后根據(jù)所述地址信息,從所述存儲(chǔ)模塊中獲取所述地址信息對(duì)應(yīng)的數(shù)據(jù)。當(dāng)所述cos操作系統(tǒng)從存儲(chǔ)模塊中獲取到數(shù)據(jù)之后,將獲取的數(shù)據(jù)反饋至所述第一調(diào)制解調(diào)器11。
第一調(diào)制解調(diào)器11在獲取到cos操作系統(tǒng)反饋的數(shù)據(jù)之后,將數(shù)據(jù)通過(guò)uart發(fā)送給第二調(diào)制解調(diào)器21,最終第二調(diào)制解調(diào)器21通過(guò)第二射頻模塊22將數(shù)據(jù)上傳至基站,以完成鑒權(quán)。
由于上文已經(jīng)說(shuō)明,buffer1和buffer2對(duì)應(yīng)著同一個(gè)物理地址,因此第一調(diào)制解調(diào)器11將提取的數(shù)據(jù)包緩存至buffer1時(shí),數(shù)據(jù)包通過(guò)該uart發(fā)送至buffer2中緩存,第二調(diào)制解調(diào)器21在buffer2中檢測(cè)到該數(shù)據(jù)包時(shí),即可獲取到該數(shù)據(jù)包,以實(shí)現(xiàn)數(shù)據(jù)包的傳輸。
可以理解的是,通過(guò)第一預(yù)設(shè)接口和/或第二預(yù)設(shè)接口,即可可實(shí)現(xiàn)第一處理芯片001和第二處理芯片002之間的連接。
第一調(diào)制解調(diào)器11和第二調(diào)制解調(diào)器21包含各種網(wǎng)絡(luò)交互的網(wǎng)絡(luò)制式的協(xié)議棧,協(xié)議棧包含lte(longtermevolution,長(zhǎng)期演進(jìn))/wcdma(widebandcodedivisionmultipleaccess,寬帶碼分多址)/gsm(globalsystemformobilecommunication,全球移動(dòng)通信系統(tǒng))/td-scdma(timedivision-synchronouscodedivisionmultipleaccess,同步時(shí)分碼分多址)/cdma(codedivisionmultipleaccess,碼分多址)/edge(enhanceddatarateforgsmevolution,強(qiáng)型數(shù)據(jù)速率gsm演進(jìn)技術(shù))等通訊標(biāo)準(zhǔn)里邊規(guī)定的協(xié)議代碼。移動(dòng)終端100通過(guò)協(xié)議與運(yùn)營(yíng)商網(wǎng)絡(luò)進(jìn)行交互,即進(jìn)行數(shù)據(jù)流量上網(wǎng)、volte(voiceoverlte)打電話(huà)或者cs(circuitswitched,電路交換)域打電話(huà)。第一調(diào)制解調(diào)器11和第二調(diào)制解調(diào)器21還用于對(duì)sim卡的管控等等。
在本發(fā)明實(shí)施例中,第一射頻模塊12用于將第一處理芯片001傳輸?shù)臄?shù)據(jù)處理后傳給enodeb101(基站網(wǎng)絡(luò)),以及用于將enodeb101傳輸?shù)臄?shù)據(jù)處理后傳給第一處理芯片001。第二射頻模塊22用于將第二處理芯片002傳輸?shù)臄?shù)據(jù)處理后傳給enodeb101(基站網(wǎng)絡(luò)),以及用于將enodeb101傳輸?shù)臄?shù)據(jù)處理后傳給第二處理芯片002。
第一射頻模塊12和第二射頻模塊22所涉及的無(wú)線(xiàn)接入技術(shù)可以包括lte、gsm、gprs(generalpacketradioservice,通用分組無(wú)線(xiàn)服務(wù))、cdma、edge、wlan(wirelesslocalareanetworks,無(wú)線(xiàn)局域網(wǎng))、cdma-2000、td-scdma、wcdma、wifi(wirelessfidelity,無(wú)線(xiàn)保真)等等。
移動(dòng)終端100中的虛擬用戶(hù)識(shí)別卡10a、第一用戶(hù)識(shí)別卡13和第二用戶(hù)識(shí)別卡14存儲(chǔ)不同的無(wú)線(xiàn)通信標(biāo)準(zhǔn)相關(guān)聯(lián)的用戶(hù)信息。應(yīng)當(dāng)理解,目前的移動(dòng)終端只有一套射頻,移動(dòng)終端內(nèi)部的兩個(gè)用戶(hù)識(shí)別卡使用該套射頻是分時(shí)復(fù)用的關(guān)系,并不能同時(shí)占用。例如,在兩張用戶(hù)識(shí)別卡全開(kāi)時(shí),一張卡可以處理gsm通話(huà),另一張卡只能處理4g網(wǎng)絡(luò)信息,具體哪個(gè)用戶(hù)識(shí)別卡執(zhí)行何種網(wǎng)絡(luò),不做限定。因此目前的射頻雙卡分時(shí)復(fù)用這種架構(gòu)僅做到了lte+gsm(即一張用戶(hù)識(shí)別卡對(duì)應(yīng)的技術(shù)標(biāo)準(zhǔn)為lte,另一張用戶(hù)識(shí)別卡對(duì)應(yīng)的技術(shù)標(biāo)準(zhǔn)為gsm)。
也就是說(shuō),現(xiàn)有的移動(dòng)終端100雖然可以支持雙用戶(hù)識(shí)別卡,但是移動(dòng)終端100在注冊(cè)網(wǎng)絡(luò)的情況下,兩個(gè)用戶(hù)識(shí)別卡支持的是不同技術(shù)標(biāo)準(zhǔn)的網(wǎng)絡(luò),一個(gè)支持2g或3g,另一個(gè)支持4g,會(huì)使得移動(dòng)終端100使用過(guò)程中,上網(wǎng)流量速度較慢,因此本發(fā)明中,移動(dòng)終端100通過(guò)預(yù)設(shè)接口連接第一處理芯片001和第二處理芯片002,由于第二處理芯片002包括第二調(diào)制解調(diào)器21、并連接第二射頻模塊22,且第二射頻模塊22支持4g網(wǎng)絡(luò)。因此,移動(dòng)終端100可通過(guò)第一處理芯片001和第二處理芯片002具備雙lte功能。當(dāng)然,可用虛擬用戶(hù)識(shí)別卡10a替代上述的第一用戶(hù)識(shí)別卡13和第二用戶(hù)識(shí)別卡14,具體不做贅述。
在本實(shí)施例中,虛擬用戶(hù)識(shí)別卡10a、第一用戶(hù)識(shí)別卡13和第二用戶(hù)識(shí)別卡14用于提供移動(dòng)通信業(yè)務(wù)(cs語(yǔ)音業(yè)務(wù)、ps數(shù)據(jù)業(yè)務(wù)和ps語(yǔ)音業(yè)務(wù))所需的相關(guān)數(shù)據(jù),并在其內(nèi)部存儲(chǔ)用戶(hù)信息、短消息、執(zhí)行鑒權(quán)算法和產(chǎn)生加密密匙等。
用戶(hù)識(shí)別卡(虛擬用戶(hù)識(shí)別卡10a、第一用戶(hù)識(shí)別卡13和第二用戶(hù)識(shí)別卡14)與移動(dòng)終端100交互時(shí),移動(dòng)終端100檢測(cè)該用戶(hù)識(shí)別卡存在與否的信號(hào)只在開(kāi)機(jī)瞬時(shí)產(chǎn)生,當(dāng)開(kāi)機(jī)檢測(cè)不到用戶(hù)識(shí)別卡存在時(shí),移動(dòng)終端100將提示“插入用戶(hù)識(shí)別卡”。移動(dòng)終端100開(kāi)機(jī)之后,移動(dòng)終端100和用戶(hù)識(shí)別卡之間28秒通信一次,完成一些固定的通信檢查(例如,用戶(hù)識(shí)別卡是否在位等)。
在本發(fā)明的實(shí)施例中,虛擬用戶(hù)識(shí)別卡10a、第一用戶(hù)識(shí)別卡13和第二用戶(hù)識(shí)別卡14承載信息,并且根據(jù)外界請(qǐng)求返回對(duì)應(yīng)卡參數(shù),以及對(duì)網(wǎng)絡(luò)進(jìn)行鑒權(quán)運(yùn)算,第一射頻模塊12和第二射頻模塊22所涉及的無(wú)線(xiàn)接入技術(shù)為lte。例如,當(dāng)?shù)谝粦?yīng)用芯片001和第二應(yīng)用芯片002連接時(shí),第一用戶(hù)識(shí)別卡13可通過(guò)移動(dòng)終端100中的第一調(diào)制解調(diào)器11支持lte,而第二用戶(hù)識(shí)別卡14通過(guò)第二調(diào)制解調(diào)器21支持lte;或者,第一用戶(hù)識(shí)別卡13可通過(guò)第二調(diào)制解調(diào)器21支持lte,而第二用戶(hù)識(shí)別卡14通過(guò)第一調(diào)制解調(diào)器11支持lte,以實(shí)現(xiàn)移動(dòng)終端100可支持雙lte。
移動(dòng)終端100中的rpm15用于管控各種資源,包括時(shí)鐘資源、總線(xiàn)資源、pmic(powermanagementic,電源管理集成電路,即各個(gè)芯片的電壓)、ddr(內(nèi)存分配),以及管理芯片的休眠喚醒的中斷和應(yīng)用處理器喚醒的截止時(shí)間。移動(dòng)終端100的各個(gè)子系統(tǒng),在需要資源時(shí),向rpm15申請(qǐng)資源,各個(gè)子系統(tǒng)分別包括第一應(yīng)用處理器10,第一調(diào)制解調(diào)器11、pronto(wifi/藍(lán)牙、nfc(nearfieldcommunication,近場(chǎng)通信)等)、lpass(lowpoweraudiosubsystem,低功耗音頻子系統(tǒng)),rpm15用來(lái)決定移動(dòng)終端100系統(tǒng)的休眠狀態(tài),具體是,rpm15基于各個(gè)子系統(tǒng)的投票機(jī)制實(shí)現(xiàn),當(dāng)各個(gè)子系統(tǒng)都投休眠票時(shí),rpm15才可以使移動(dòng)終端100整個(gè)系統(tǒng)進(jìn)行休眠。在移動(dòng)終端100的整個(gè)系統(tǒng)休眠之后,若是要重新啟動(dòng)運(yùn)行,第二處理芯片002可自動(dòng)喚醒,但是第一處理芯片001需要第二處理芯片002喚醒,以進(jìn)行數(shù)據(jù)的傳輸交互。
在本發(fā)明實(shí)施例中,第一處理芯片001和第二處理芯片002之間通過(guò)預(yù)設(shè)接口連接的情況下,喚醒方式可為以下三種:
1、第一應(yīng)用處理器10接收到控制信令數(shù)據(jù)時(shí),通過(guò)usb接口傳送探測(cè)包給第二應(yīng)用處理器20,以喚醒第二應(yīng)用處理器20。
2、第二調(diào)制解調(diào)器21接收到用戶(hù)數(shù)據(jù)時(shí),喚醒第二應(yīng)用處理器20,由第二應(yīng)用處理器20通過(guò)usb接口傳送探測(cè)包給第一應(yīng)用處理器10,以喚醒第一應(yīng)用處理器10。
3、第二調(diào)制解調(diào)器21周期性查找尋呼請(qǐng)求,以主動(dòng)激活自己,若接收到尋呼請(qǐng)求,喚醒第二應(yīng)用處理器20,由第二應(yīng)用處理器20通過(guò)usb接口發(fā)送探測(cè)包給第一應(yīng)用處理器10,以喚醒第二應(yīng)用處理器20。
此外,第二調(diào)制解調(diào)器21還可以定期喚醒自己,以在移動(dòng)終端100進(jìn)行位置更新時(shí),跟基站進(jìn)行握手交互,此時(shí)不需要喚醒第一應(yīng)用處理器10。
在本發(fā)明實(shí)施例中,移動(dòng)終端包括但不限于手機(jī)、pc(personalcomputer,個(gè)人電腦)或pad(personaldigitalassistant,個(gè)人數(shù)字助理)。
需要說(shuō)明的是,傳輸?shù)臄?shù)據(jù)包為用戶(hù)數(shù)據(jù)或控制信令數(shù)據(jù)時(shí),用戶(hù)數(shù)據(jù)或控制信令數(shù)據(jù)在應(yīng)用處理器之間傳輸;當(dāng)傳輸?shù)臄?shù)據(jù)包為用戶(hù)識(shí)別卡數(shù)據(jù)即sim卡數(shù)據(jù)時(shí),sim卡數(shù)據(jù)只會(huì)在調(diào)制解調(diào)器之間傳輸;由于本發(fā)明實(shí)施例主要針對(duì)電信卡即sim卡傳輸數(shù)據(jù)導(dǎo)致終端死機(jī)的情況,因此本實(shí)施例中的數(shù)據(jù)包主要是在調(diào)制解調(diào)器之間傳輸?shù)臄?shù)據(jù)包。
本實(shí)施例中,sim卡包括移動(dòng)卡、聯(lián)通卡和電信卡,其中,移動(dòng)卡和聯(lián)通卡是指采用3gpp標(biāo)準(zhǔn)協(xié)議進(jìn)行通訊的電話(huà)卡,3gpp標(biāo)準(zhǔn)協(xié)議規(guī)定了電話(huà)卡傳輸數(shù)據(jù)包的容量不能超出一定值,該值設(shè)置為512個(gè)字節(jié);而電信卡是指采用3gpp2標(biāo)準(zhǔn)協(xié)議的電話(huà)卡,gpp2標(biāo)準(zhǔn)協(xié)議對(duì)電信卡傳輸?shù)臄?shù)據(jù)包的容量未做限制,電信卡傳輸?shù)臄?shù)據(jù)包的容量一般會(huì)超出512字節(jié)。其中,移動(dòng)卡是由中國(guó)移動(dòng)(運(yùn)營(yíng)商)向用戶(hù)提供的sim卡,聯(lián)通卡是由中國(guó)聯(lián)通(運(yùn)營(yíng)商)向用戶(hù)提供的sim卡,電信卡是由中國(guó)電信(運(yùn)營(yíng)商)向用戶(hù)提供的sim卡。
由于現(xiàn)有的buffer的容量一般都不超過(guò)512個(gè)字節(jié)。因此,當(dāng)移動(dòng)終端100中的虛擬用戶(hù)識(shí)別卡10a、第一用戶(hù)識(shí)別卡13和第二用戶(hù)識(shí)別卡14都是移動(dòng)卡或者是聯(lián)通卡時(shí),由于移動(dòng)卡或者是聯(lián)通卡收發(fā)數(shù)據(jù)包的數(shù)據(jù)容量小于512個(gè)字節(jié)的,因此,第一調(diào)制解調(diào)器11接收到數(shù)據(jù)包獲取請(qǐng)求時(shí),從虛擬用戶(hù)識(shí)別卡10a、第一用戶(hù)識(shí)別卡13和第二用戶(hù)識(shí)別卡14獲取到的數(shù)據(jù)包也是小于512個(gè)字節(jié),相應(yīng)的,存儲(chǔ)到buffer的數(shù)據(jù)包也是小于512個(gè)字節(jié)的,因此,數(shù)據(jù)包可完整的存儲(chǔ)到buffer中,后續(xù),第二調(diào)制解調(diào)器21也可以取出一個(gè)完整的數(shù)據(jù)包。
但是,由于電信卡一般大于512字節(jié),因此,在第一調(diào)制解調(diào)器11和第二調(diào)制解調(diào)器21的數(shù)據(jù)交互過(guò)程中,若是第一調(diào)制解調(diào)器11中連接的是電信卡,會(huì)出現(xiàn)這樣的情況:
以圖2為例,在虛擬用戶(hù)識(shí)別卡10a、第一用戶(hù)識(shí)別卡13和第二用戶(hù)識(shí)別卡14為電信卡的情況下,移動(dòng)終端100的第一調(diào)制解調(diào)器11從虛擬用戶(hù)識(shí)別卡10a、第一用戶(hù)識(shí)別卡13中或第二用戶(hù)識(shí)別卡14提取出一個(gè)數(shù)據(jù)包,由于該數(shù)據(jù)包大于512字節(jié),而buffer一次性只能緩存不超過(guò)512字節(jié)的數(shù)據(jù)包,這種情況下,會(huì)由于無(wú)法轉(zhuǎn)發(fā)大數(shù)據(jù)包導(dǎo)致移動(dòng)終端的系統(tǒng)死機(jī)。
若是要解決這個(gè)問(wèn)題,按照常規(guī)的思路,不會(huì)將該數(shù)據(jù)包一次性進(jìn)行轉(zhuǎn)發(fā),而是拆分成多個(gè)數(shù)據(jù)包進(jìn)行轉(zhuǎn)發(fā),但是對(duì)于第二調(diào)制解調(diào)器21而言,當(dāng)從buffer檢測(cè)到有數(shù)據(jù)包時(shí),認(rèn)為該數(shù)據(jù)包是完整的數(shù)據(jù)包,此時(shí)第二調(diào)制解調(diào)器21直接從buffer獲取該數(shù)據(jù)包,并將該數(shù)據(jù)包轉(zhuǎn)發(fā)至基站。很明顯,這種情況下,轉(zhuǎn)發(fā)的數(shù)據(jù)包是不完整的數(shù)據(jù)包。
基于上述lte網(wǎng)絡(luò)的架構(gòu)圖、移動(dòng)終端100的硬件結(jié)構(gòu)示意圖以及現(xiàn)有技術(shù)存在的問(wèn)題,提出本發(fā)明的各個(gè)實(shí)施例。
參照?qǐng)D2,本實(shí)施例提出一種移動(dòng)終端,所述移動(dòng)終端包括基于預(yù)設(shè)接口連接的第一處理芯片001和第二處理芯片002、與所述第一處理芯片001連接的第一射頻模塊12、以及與所述第二處理芯片002連接的第二射頻模塊22,所述第一處理芯片001包括內(nèi)嵌有虛擬用戶(hù)識(shí)別卡10a的第一應(yīng)用處理器10以及與第一用戶(hù)識(shí)別卡13和第二用戶(hù)識(shí)別卡14連接的第一調(diào)制解調(diào)器11,所述第二處理芯片002包括第二應(yīng)用處理器20和第二調(diào)制解調(diào)器21,
第一調(diào)制解調(diào)器11,用于通過(guò)預(yù)設(shè)接口接收第二調(diào)制解調(diào)器21發(fā)送的數(shù)據(jù)包獲取請(qǐng)求時(shí),從虛擬用戶(hù)識(shí)別卡10a中提取所述數(shù)據(jù)包獲取請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)包;
對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮;
將壓縮后的數(shù)據(jù)包緩存至所述預(yù)設(shè)接口的臨時(shí)緩沖區(qū)buffer中,以供第二調(diào)制解調(diào)器21從所述buffer中提取壓縮后的數(shù)據(jù)包,以完成數(shù)據(jù)包的傳輸。
在本實(shí)施例中,所述第一調(diào)制解調(diào)器11通過(guò)預(yù)設(shè)接口接收第二調(diào)制解調(diào)器21發(fā)送的數(shù)據(jù)包獲取請(qǐng)求,后續(xù)也是通過(guò)所述預(yù)設(shè)接口將數(shù)據(jù)包反饋至所述第二調(diào)制解調(diào)器21。所述預(yù)設(shè)接口為uart接口。
其中,當(dāng)?shù)诙幚硇酒?02的第二調(diào)制解調(diào)器21通過(guò)第二射頻模塊22接收到基站發(fā)送的數(shù)據(jù)包獲取請(qǐng)求時(shí),先通過(guò)uart將數(shù)據(jù)包獲取請(qǐng)求傳送給第一處理芯片001的第一調(diào)制解調(diào)器11;第一調(diào)制解調(diào)器11接收到該數(shù)據(jù)包獲取請(qǐng)求后,根據(jù)數(shù)據(jù)包獲取請(qǐng)求從虛擬用戶(hù)識(shí)別卡10a中獲取數(shù)據(jù)包;第一調(diào)制解調(diào)器11在獲取到數(shù)據(jù)包之后,為了保證傳輸?shù)臄?shù)據(jù)不會(huì)大于uart的buffer,先對(duì)獲取的數(shù)據(jù)包進(jìn)行壓縮,得到壓縮后的數(shù)據(jù)包;再通過(guò)uart將壓縮后的數(shù)據(jù)包傳送至第二調(diào)制解調(diào)器21;第二調(diào)制解調(diào)器21接收到數(shù)據(jù)包后,再通過(guò)第二射頻模塊22將數(shù)據(jù)包上傳至基站,以完成數(shù)據(jù)包的傳輸。
本實(shí)施例中,第一調(diào)制解調(diào)器11不限于從虛擬用戶(hù)識(shí)別卡10a中獲取數(shù)據(jù)包,當(dāng)然,也可根據(jù)實(shí)際需要在第一用戶(hù)識(shí)別卡13或第二用戶(hù)識(shí)別卡14中獲取數(shù)據(jù)包,第一調(diào)制解調(diào)器11在虛擬用戶(hù)識(shí)別卡10a、第一用戶(hù)識(shí)別卡13或第二用戶(hù)識(shí)別卡14中獲取數(shù)據(jù)包的方式一致,下文為了簡(jiǎn)述,僅以在虛擬用戶(hù)識(shí)別卡中獲取數(shù)據(jù)包為例,其它兩種不再贅述。
具體地,所述第一調(diào)制解調(diào)器11從虛擬用戶(hù)識(shí)別卡10a中提取所述數(shù)據(jù)包獲取請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)包具體包括:
所述第一調(diào)制解調(diào)器11向虛擬用戶(hù)識(shí)別卡10a中的片內(nèi)操作系統(tǒng)發(fā)送數(shù)據(jù)包獲取請(qǐng)求,由所述片內(nèi)操作系統(tǒng)在虛擬用戶(hù)識(shí)別卡10a中的文件存儲(chǔ)模塊中提取所述數(shù)據(jù)包獲取請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)包,并反饋至所述第一調(diào)制解調(diào)器11;
所述第一調(diào)制解調(diào)器11接收片內(nèi)操作系統(tǒng)反饋的數(shù)據(jù)包。
在本實(shí)施例中,需要說(shuō)明的是,虛擬用戶(hù)識(shí)別卡10a中的數(shù)據(jù)包存儲(chǔ)在文件存儲(chǔ)模塊中,當(dāng)?shù)谝徽{(diào)制解調(diào)器11要獲取虛擬用戶(hù)識(shí)別卡10a中的數(shù)據(jù)包時(shí),第一調(diào)制解調(diào)器11不會(huì)直接與虛擬用戶(hù)識(shí)別卡10a中的文件存儲(chǔ)模塊交互,而是先向虛擬用戶(hù)識(shí)別卡10a中的cos(chipoperatingsystem,片內(nèi)操作系統(tǒng))操作系統(tǒng)發(fā)送數(shù)據(jù)包獲取請(qǐng)求即request,然后虛擬用戶(hù)識(shí)別卡10a的cos操作系統(tǒng)基于該request在文件存儲(chǔ)模塊中獲取數(shù)據(jù)包,然后將獲取的數(shù)據(jù)包再傳輸給第一調(diào)制解調(diào)器11,第一調(diào)制解調(diào)器11只要接收cos操作系統(tǒng)反饋的數(shù)據(jù)包即可實(shí)現(xiàn)數(shù)據(jù)包的獲取過(guò)程。
可以理解,由于第一調(diào)制解調(diào)器11無(wú)法在虛擬用戶(hù)識(shí)別卡10a中的文件存儲(chǔ)模塊直接提取數(shù)據(jù)包,因此通過(guò)與虛擬用戶(hù)識(shí)別卡10a的cos操作系統(tǒng)進(jìn)行交互,以實(shí)現(xiàn)數(shù)據(jù)包的提取,保證后續(xù)的數(shù)據(jù)傳輸過(guò)程正常運(yùn)行。
當(dāng)?shù)谝徽{(diào)制解調(diào)器11從虛擬用戶(hù)識(shí)別卡10a中提取出數(shù)據(jù)包獲取請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)包之后,再對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮,本實(shí)施例中,第一調(diào)制解調(diào)器11對(duì)數(shù)據(jù)包進(jìn)行壓縮時(shí),可以采用加密壓縮的方式進(jìn)行數(shù)據(jù)包的壓縮,也可以直接采用明文進(jìn)行壓縮。由于傳輸?shù)膕im卡網(wǎng)絡(luò)鑒權(quán)數(shù)據(jù)量比較小,為了減少加密解密等操作而導(dǎo)致數(shù)據(jù)傳輸效率低,本發(fā)明實(shí)施例優(yōu)選采用明文壓縮的方式對(duì)數(shù)據(jù)包進(jìn)行壓縮,即本方案中采用的壓縮算法以簡(jiǎn)單高效為主,具體采用的壓縮算法和壓縮過(guò)程在下文實(shí)施例中詳述。
第一調(diào)制解調(diào)器11對(duì)數(shù)據(jù)包壓縮之后,即可將壓縮后的數(shù)據(jù)包緩存至所述預(yù)設(shè)接口uart的buffer中,以供第二調(diào)制解調(diào)器21從所述buffer中提取壓縮后的數(shù)據(jù)包,以完成數(shù)據(jù)包的傳輸。
本實(shí)施例中需要說(shuō)明的是,buffer存在于uart接口的兩端,即uart接口的兩端分別設(shè)置有buffer1和buffer2。當(dāng)?shù)诙{(diào)制解調(diào)器21通過(guò)第二射頻模塊22接收到基站發(fā)送的數(shù)據(jù)獲取請(qǐng)求時(shí),將數(shù)據(jù)包獲取請(qǐng)求通過(guò)uart接口發(fā)送給第一調(diào)制解調(diào)器11,第一調(diào)制解調(diào)器11從虛擬用戶(hù)識(shí)別卡10a提取出數(shù)據(jù)包之后,先將提取的數(shù)據(jù)包存儲(chǔ)到buffer1中,以通過(guò)uart傳輸至第二調(diào)制解調(diào)器21的buffer2中,第二調(diào)制解調(diào)器21再?gòu)腷uffer2中獲取數(shù)據(jù)包。
本實(shí)施例提出的移動(dòng)終端,第一調(diào)制解調(diào)器通過(guò)預(yù)設(shè)接口接收第二調(diào)制解調(diào)器發(fā)送的數(shù)據(jù)包獲取請(qǐng)求時(shí),先從虛擬用戶(hù)識(shí)別卡中提取所述數(shù)據(jù)包獲取請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)包,然后對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮,再將壓縮后的數(shù)據(jù)包緩存至所述預(yù)設(shè)接口的buffer中,以供第二調(diào)制解調(diào)器從所述buffer中提取壓縮后的數(shù)據(jù)包,以完成數(shù)據(jù)包的傳輸。本方案在傳輸數(shù)據(jù)包時(shí),先對(duì)待傳輸?shù)臄?shù)據(jù)包進(jìn)行壓縮,再將壓縮后的數(shù)據(jù)包進(jìn)行傳輸,使得傳輸?shù)臄?shù)據(jù)包的容量值有所減小,避免了數(shù)據(jù)傳輸過(guò)程中移動(dòng)終端死機(jī)的情況。
進(jìn)一步地,基于第一實(shí)施例提出本發(fā)明移動(dòng)終端第二實(shí)施例。
移動(dòng)終端第二實(shí)施例與移動(dòng)終端第一實(shí)施例的區(qū)別在于,所述第一調(diào)制解調(diào)器11,還用于判斷能否從所述數(shù)據(jù)包獲取請(qǐng)求中提取出第二調(diào)制解調(diào)器21添加的壓縮標(biāo)識(shí);若能提取出壓縮標(biāo)識(shí),則對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮。
在本實(shí)施例中,當(dāng)?shù)诙{(diào)制解調(diào)器21向第一調(diào)制解調(diào)器11發(fā)送數(shù)據(jù)包獲取請(qǐng)求(request)之前,為了防止傳輸?shù)臄?shù)據(jù)包過(guò)大,第二調(diào)制解調(diào)器21發(fā)送request時(shí),先確定是否需要在request中添加壓縮標(biāo)識(shí),若需要,則先在request中添加一個(gè)壓縮標(biāo)識(shí),如添加字段01,以告知第一調(diào)制解調(diào)器11對(duì)待發(fā)送的數(shù)據(jù)包進(jìn)行壓縮。
需要說(shuō)明的是,由于待傳輸?shù)臄?shù)據(jù)是根據(jù)通訊協(xié)議標(biāo)準(zhǔn)確定的,因此,第二調(diào)制解調(diào)器21可以得知即將獲取的數(shù)據(jù)包的數(shù)據(jù)類(lèi)型和數(shù)據(jù)大小,那么,當(dāng)?shù)诙{(diào)制解調(diào)器21發(fā)送request之前,先判斷當(dāng)前待獲取的數(shù)據(jù)包的大小,若待獲取的數(shù)據(jù)包的大小超出了buffer的容量值,則第二調(diào)制解調(diào)器21在request中添加壓縮標(biāo)識(shí),以告知第一調(diào)制解調(diào)器11對(duì)待傳輸?shù)臄?shù)據(jù)包進(jìn)行壓縮,若第二調(diào)制解調(diào)器21判斷待獲取的數(shù)據(jù)包的大小未超出buffer的容量值,則直接發(fā)送request即可,無(wú)需添加壓縮標(biāo)識(shí)。
在本實(shí)施例中,第二調(diào)制解調(diào)器21發(fā)送request之前,對(duì)待獲取的數(shù)據(jù)包的大小進(jìn)行識(shí)別,僅在待獲取的數(shù)據(jù)包超出buffer的容量值時(shí),才在request添加壓縮標(biāo)識(shí),避免了所有的數(shù)據(jù)包獲取請(qǐng)求都添加壓縮標(biāo)識(shí),縮短了數(shù)據(jù)包傳輸?shù)臅r(shí)間,提高了數(shù)據(jù)包傳輸?shù)男省?/p>
當(dāng)?shù)谝徽{(diào)制解調(diào)器11通過(guò)預(yù)設(shè)接口(uart)接收第二調(diào)制解調(diào)器21發(fā)送的數(shù)據(jù)包獲取請(qǐng)求時(shí),先對(duì)所述數(shù)據(jù)包獲取請(qǐng)求進(jìn)行解析,以確定能否從所述數(shù)據(jù)包獲取請(qǐng)求中提取出第二調(diào)制解調(diào)器21添加的壓縮標(biāo)識(shí),若在所述數(shù)據(jù)包獲取請(qǐng)求中提取出壓縮標(biāo)識(shí),此時(shí),所述第一調(diào)制解調(diào)器11即可對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮,后續(xù)再將壓縮后的數(shù)據(jù)包緩存至所述預(yù)設(shè)接口的buffer1中,并通過(guò)uart傳輸至buffer2中,以供第二調(diào)制解調(diào)器21從所述buffer2中提取壓縮后的數(shù)據(jù)包,以完成數(shù)據(jù)包的傳輸。
在本實(shí)施例中,數(shù)據(jù)包傳輸過(guò)程是發(fā)生第一調(diào)制解調(diào)器11和第二調(diào)制解調(diào)器21喚醒之后,那么當(dāng)?shù)谝徽{(diào)制解調(diào)器11和第二調(diào)制解調(diào)器21喚醒之后,若第二調(diào)制解調(diào)器21通過(guò)第二射頻模塊22接收到基站發(fā)送的數(shù)據(jù)包獲取請(qǐng)求,執(zhí)行以下操作:
判斷:先確定待獲取的數(shù)據(jù)包的大小,以判斷是否需要添加壓縮標(biāo)識(shí);
決策:若待獲取的數(shù)據(jù)包超過(guò)uart的buffer的容量,則在發(fā)送數(shù)據(jù)包獲取請(qǐng)求之前,在數(shù)據(jù)包獲取請(qǐng)求添加壓縮標(biāo)識(shí);
發(fā)送:在數(shù)據(jù)包獲取請(qǐng)求添加壓縮標(biāo)識(shí)之后,發(fā)送數(shù)據(jù)包獲取請(qǐng)求。
第一調(diào)制解調(diào)器11通過(guò)uart接收到數(shù)據(jù)包獲取請(qǐng)求時(shí),執(zhí)行以下操作:
提?。捍_定能否從數(shù)據(jù)包獲取請(qǐng)求中提取出壓縮標(biāo)識(shí),若能,則提取出壓縮標(biāo)識(shí);
壓縮:基于提取的壓縮標(biāo)識(shí),對(duì)從虛擬用戶(hù)識(shí)別卡10a提取的數(shù)據(jù)包進(jìn)行壓縮;
反饋:反饋壓縮的數(shù)據(jù)包。
最終,第二調(diào)制解調(diào)器21通過(guò)uart接收第一調(diào)制解調(diào)器11反饋的數(shù)據(jù)包,以完成數(shù)據(jù)包傳輸過(guò)程。上述的操作過(guò)程,可參照?qǐng)D3。
需要說(shuō)明的是,第二調(diào)制解調(diào)器21發(fā)送的是數(shù)據(jù)包獲取請(qǐng)求,由于數(shù)據(jù)包獲取請(qǐng)求一般都小于buffer的容量,因此可不對(duì)數(shù)據(jù)包獲取請(qǐng)求進(jìn)行壓縮。
在本實(shí)施例中,第一調(diào)制解調(diào)器11在對(duì)數(shù)據(jù)包進(jìn)行壓縮之前,先判斷能否從所述數(shù)據(jù)包獲取請(qǐng)求中提取出第二調(diào)制解調(diào)器21添加的壓縮標(biāo)識(shí),若能提取出壓縮標(biāo)識(shí),才對(duì)數(shù)據(jù)包進(jìn)行壓縮,防止數(shù)據(jù)包小于buffer的容量時(shí)也進(jìn)行壓縮,以防止系統(tǒng)資源的浪費(fèi),并且節(jié)省了數(shù)據(jù)包傳輸?shù)臅r(shí)間,從而提高了數(shù)據(jù)包傳輸?shù)男省?/p>
進(jìn)一步地,基于第一實(shí)施例提出本發(fā)明移動(dòng)終端第三實(shí)施例。
移動(dòng)終端第三實(shí)施例與移動(dòng)終端第一實(shí)施例的區(qū)別在于,所述第一調(diào)制解調(diào)器11,還用于對(duì)提取的所述數(shù)據(jù)包進(jìn)行解析,以得到所述數(shù)據(jù)包的包頭;基于所述數(shù)據(jù)包的包頭確定所述數(shù)據(jù)包的長(zhǎng)度;在所述數(shù)據(jù)包的長(zhǎng)度大于預(yù)設(shè)閾值時(shí),則對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮。
在本實(shí)施例中,所述第一調(diào)制解調(diào)器11對(duì)數(shù)據(jù)包進(jìn)行壓縮之前,先對(duì)從第一用戶(hù)識(shí)別卡13或第二用戶(hù)識(shí)別卡14中提取的數(shù)據(jù)包進(jìn)行解析,以得到所述數(shù)據(jù)包的包頭,然后從包頭中獲取數(shù)據(jù)包的長(zhǎng)度,以確定該數(shù)據(jù)包的大小。其中,數(shù)據(jù)包為tlv格式,tlv格式是ber(basicencodingrules,基本編碼規(guī)則)編碼的一種,全稱(chēng)為type(類(lèi)型),length(長(zhǎng)度),value(值),t字段表示數(shù)據(jù)包的類(lèi)型,l字段表示數(shù)據(jù)包的長(zhǎng)度、v字段用于存放數(shù)據(jù)包的內(nèi)容。
本實(shí)施例中,該數(shù)據(jù)包的生成過(guò)程為:傳輸層獲取到數(shù)據(jù)包對(duì)應(yīng)的原始數(shù)據(jù),并為原始數(shù)據(jù)添加傳輸層的數(shù)據(jù)包頭,數(shù)據(jù)包頭包括傳輸層數(shù)據(jù)類(lèi)型和數(shù)據(jù)長(zhǎng)度,得到初始數(shù)據(jù)包,并將初始數(shù)據(jù)包傳輸至傳輸復(fù)用層。當(dāng)傳輸復(fù)用層接收到初始數(shù)據(jù)包后,為初始化數(shù)據(jù)包添加傳輸復(fù)用層的數(shù)據(jù)包頭,數(shù)據(jù)包頭包括復(fù)用層的數(shù)據(jù)類(lèi)型和數(shù)據(jù)長(zhǎng)度,得到數(shù)據(jù)包,并調(diào)用物理驅(qū)動(dòng)層的發(fā)送接口將該數(shù)據(jù)包發(fā)送給物理層。后續(xù),第一調(diào)制解調(diào)器11對(duì)提取的所述數(shù)據(jù)包進(jìn)行解析,就是從物理層(物理傳輸介質(zhì))之上的物理驅(qū)動(dòng)層檢測(cè)數(shù)據(jù)包的包頭,以解析得到數(shù)據(jù)包的大小(長(zhǎng)度)。
當(dāng)?shù)谝徽{(diào)制解調(diào)器11確定數(shù)據(jù)包的長(zhǎng)度后,再判斷該數(shù)據(jù)包的長(zhǎng)度是否大于預(yù)設(shè)閾值(即buffer的容量值)。在本實(shí)施例中,所述預(yù)設(shè)閾值可選為512字節(jié),在其它實(shí)施例中,也可以將所述預(yù)設(shè)閾值設(shè)置為其它長(zhǎng)度,在此不再限定。當(dāng)數(shù)據(jù)包的長(zhǎng)度大于所述預(yù)設(shè)閾值時(shí),為了防止數(shù)據(jù)包傳輸導(dǎo)致終端死機(jī),所述第一調(diào)制解調(diào)器11對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮。可以理解,若提取的數(shù)據(jù)包的長(zhǎng)度小于預(yù)設(shè)閾值,所述第一調(diào)制解調(diào)器11可直接通過(guò)uart接口發(fā)送該數(shù)據(jù)包至第二調(diào)制解調(diào)器21。
在本實(shí)施例中,在對(duì)數(shù)據(jù)包進(jìn)行壓縮之前,所述第一調(diào)制解調(diào)器對(duì)提取的所述數(shù)據(jù)包進(jìn)行解析,以得到所述數(shù)據(jù)包的包頭,再確定所述數(shù)據(jù)包的長(zhǎng)度,僅在數(shù)據(jù)包的長(zhǎng)度大于預(yù)設(shè)閾值時(shí),才對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮,從而提高了數(shù)據(jù)包壓縮的準(zhǔn)確性。
進(jìn)一步地,基于第一至第三實(shí)施例提出本發(fā)明移動(dòng)終端第四實(shí)施例。
移動(dòng)終端第四實(shí)施例與移動(dòng)終端第一至第三實(shí)施例的區(qū)別在于,所述第一調(diào)制解調(diào)器11對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮具體包括:
獲取所述數(shù)據(jù)包對(duì)應(yīng)的源文本;
確定源文本中出現(xiàn)頻率大于預(yù)設(shè)頻率的字符段;
在預(yù)設(shè)字典列表中,查找所述字符段對(duì)應(yīng)的編碼,其中,編碼的長(zhǎng)度小于對(duì)應(yīng)的字符段的長(zhǎng)度;
通過(guò)查找的編碼代替對(duì)應(yīng)的字符段,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。
在本實(shí)施例中,所述第一調(diào)制解調(diào)器11對(duì)數(shù)據(jù)包進(jìn)行壓縮,具體地,先獲取數(shù)據(jù)包對(duì)應(yīng)的源文本,然后確定源文本中出現(xiàn)頻率大于預(yù)設(shè)頻率的字符段,再?gòu)念A(yù)設(shè)字典列表中,查找所述字符段對(duì)應(yīng)的編碼,其中,編碼的長(zhǎng)度小于對(duì)應(yīng)的字符段的長(zhǎng)度,最終通過(guò)查找的編碼代替對(duì)應(yīng)的字符段,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。
該過(guò)程涉及的算法為字典算法,字典算法是最為簡(jiǎn)單的壓縮算法之一。該字典算法把文本中出現(xiàn)頻率大于預(yù)設(shè)一定值的單詞或詞匯組合做成一個(gè)對(duì)應(yīng)的字典列表,并用特殊代碼來(lái)表示這個(gè)單詞或詞匯,例如,當(dāng)前的字典列表中:
00=chinese
01=people
02=china
若當(dāng)期數(shù)據(jù)包中的源文本為:iamachinesepeople,iamfromchina。那么,采用該字典算法,壓縮后的編碼為:iama0001,iamfrom02。
可以理解,壓縮編碼后的長(zhǎng)度顯著縮小,這樣的編碼專(zhuān)有名詞或者固定組合較多的內(nèi)容中,壓縮效率十分顯著,將預(yù)定的文本內(nèi)容用字典中預(yù)定的編碼映射替代,解壓縮的時(shí)候執(zhí)行反向還原即可。
進(jìn)一步地,所述第一調(diào)制解調(diào)器11,還用于依次確定源文本中高四位為零且相鄰的任兩個(gè)字符段;
將所述任兩個(gè)字符段的高四位進(jìn)行刪除,并將所述任兩個(gè)字符段的低四位進(jìn)行組合,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。
即,所述第一調(diào)制解調(diào)器11獲取到數(shù)據(jù)包對(duì)應(yīng)的源文本之后,還可依次確定源文本中高四位為零且相鄰的任兩個(gè)字符段,再將任兩個(gè)字符段的高四位進(jìn)行刪除,并將任兩個(gè)字符段的低四位進(jìn)行組合,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。
該過(guò)程涉及的算法為固定位長(zhǎng)算法(fixedbitlengthpacking),這種算法是把文本用需要的最少的位來(lái)進(jìn)行壓縮編碼。比如:八個(gè)十六進(jìn)制數(shù):1,2,3,4,5,6,7,8。轉(zhuǎn)換為二進(jìn)制為:00000001,00000010,00000011,00000100,00000101,00000110,00000111,00001000。每個(gè)數(shù)只用到了低4位,而高4位沒(méi)有用到(全為0),因此對(duì)低4位進(jìn)行壓縮編碼后得到:0001,0010,0011,0100,0101,0110,0111,1000。然后兩兩補(bǔ)充為8位字節(jié)得到:00010010,00110100,01010110,01111000。所以原來(lái)的八個(gè)十六進(jìn)制數(shù)縮短了一半,得到4個(gè)十六進(jìn)制數(shù):12,34,56,78。
可以理解,通過(guò)這種組合方式,將需要用到的位數(shù)進(jìn)行了縮小,使得數(shù)據(jù)包的容量有所減小,同理,解壓時(shí)執(zhí)行反響拆分添加組合即可。
進(jìn)一步地,所述第一調(diào)制解調(diào)器11,還用于對(duì)源文本中連續(xù)出現(xiàn)的字符,采用重復(fù)次數(shù)加字符進(jìn)行代替,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。
即,所述第一調(diào)制解調(diào)器11獲取到數(shù)據(jù)包對(duì)應(yīng)的源文本之后,還可對(duì)源文本中連續(xù)出現(xiàn)的字符,采用重復(fù)次數(shù)加字符進(jìn)行代替,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。
該過(guò)程涉及的算法為rle(runlengthencoding,游程編碼,又譯行程長(zhǎng)度編碼)算法,這種壓縮編碼是一種變長(zhǎng)的編碼,rle根據(jù)文本不同的具體情況會(huì)有不同的壓縮編碼變體與之相適應(yīng),以產(chǎn)生更大的壓縮比率。具體地:
變體1:重復(fù)次數(shù)+字符
文本字符串:aaabbbccccdddd,編碼后得到:3a3b4c4d;通過(guò)該變體算法,即可將數(shù)據(jù)包終端文本字符串進(jìn)行壓縮。
變體2:特殊字符+重復(fù)次數(shù)+字符
文本字符串:aaaaabccccbccc,編碼后得到:bb5abb4cbb3c;其中,該編碼串的最開(kāi)始說(shuō)明特殊字符為b,然后再添加一個(gè)b,b后面跟著的數(shù)字就表示出重復(fù)的次數(shù)。也就是說(shuō),文本串字符采用該變體2算法進(jìn)行編碼壓縮時(shí),先在編碼后的編碼串的首字母說(shuō)明特殊字符為b,然后由于后面緊接著出現(xiàn)5個(gè)字符a,需要在這5個(gè)字符a之前添加一個(gè)特殊字符即字符b,因此就是bb5a,在5a之后出現(xiàn)b,且b之后又出現(xiàn)3個(gè)c,因此,需要在3個(gè)c之前再添加一個(gè)特殊字符b,與前面連接起來(lái)就是bb5abb4c,后面采用同樣的方式,即可得到最終的編碼串bb5abb4cbb3c。
為了更清楚理解該方案,舉另一個(gè)例子:文本字符串仍然為:aaaaabccccbccc,若當(dāng)前編碼串的最開(kāi)始說(shuō)明特殊字符為d,那么,編碼后得到:dd5abd4cbd3c。
變體3:
把文本每個(gè)字節(jié)分組成塊,每個(gè)字符最多重復(fù)127次。每個(gè)塊以一個(gè)特殊字節(jié)開(kāi)頭。那個(gè)特殊字節(jié)的第7位如果被置位,那么剩下的7位數(shù)值就是后面的字符的重復(fù)次數(shù)。如果第7位沒(méi)有被置位,那么剩下7位就是后面沒(méi)有被壓縮的字符的數(shù)量。
例如:文本字符串:aaaaabcdefff,編碼后得到:85a4bcde83f(85h=10000101b、4h=00000100b、83h=10000011b)。其中,先將文本字符串分組成三個(gè)塊,分別是aaaaa、bcde和fff,三個(gè)快對(duì)應(yīng)的特殊字符分別是10000101、00000100和10000011,由于10000101中第7位被置位為1,因此剩下的7位數(shù)值為后面的字符的重復(fù)次數(shù),此時(shí)可知剩下的7位數(shù)值對(duì)應(yīng)的值為5,即可得到85a;同理,由于00000100中的第7位沒(méi)有被置位為1,那么剩下7位是后面沒(méi)有被壓縮的字符的數(shù)量,可知此時(shí)剩下7位對(duì)應(yīng)的值為4,即可得到4bcde;同理可確定83f,此處不在贅述。
需要說(shuō)明的是,以上所列舉出的三種3種rle變體算法僅僅是較佳的幾種變體算法,本領(lǐng)域技術(shù)人員利用本發(fā)明的技術(shù)思想,根據(jù)其具體需求所提出的其它rle變體算法均在本發(fā)明的保護(hù)范圍內(nèi),在此不進(jìn)行一一窮舉。
進(jìn)一步地,所述第一調(diào)制解調(diào)器11,還用于確定源文本中是否存在內(nèi)容相同且長(zhǎng)度大于預(yù)設(shè)值的字符段;
若存在,確定后一個(gè)字符段與前一個(gè)字符端的距離以及所述字符段的長(zhǎng)度;
采用距離與長(zhǎng)度的標(biāo)識(shí)代替后一個(gè)字符段,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。
即,所述第一調(diào)制解調(diào)器11獲取到數(shù)據(jù)包對(duì)應(yīng)的源文本之后,還可確定源文本中是否存在內(nèi)容相同且長(zhǎng)度大于預(yù)設(shè)值的字符段,若存在,確定后一個(gè)字符段與前一個(gè)字符端的距離以及字符段的長(zhǎng)度,采用距離與長(zhǎng)度的標(biāo)識(shí)代替后一個(gè)字符段,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。
該過(guò)程涉及的算法為lz77(由jacobziv和abrahamlempel于1977年提出,所以命名為lz77)算法。
lz77算法的壓縮原理:如果文件中有兩塊字符串內(nèi)容相同的話(huà),那么只要知道前一塊字符串內(nèi)容的位置和大小,我們就可以確定后一塊字符串的內(nèi)容。所以我們可以用(兩塊字符串之間的距離,相同內(nèi)容的長(zhǎng)度)這樣一對(duì)信息,來(lái)替換后一塊字符串內(nèi)容。由于(兩塊字符串之間的距離,相同內(nèi)容的長(zhǎng)度)這一對(duì)信息的大小,小于被替換內(nèi)容的大小,所以文件得到了壓縮。
為更好理解,下面我們來(lái)舉一個(gè)例子:
有一個(gè)文件的內(nèi)容如下:http://jiurl.yeah.nethttp://jiurl.nease.net,其中有些部分的內(nèi)容,前面已經(jīng)出現(xiàn)過(guò)了,后面用()括起來(lái)的部分就是相同的部分:http://jiurl.yeah.net(http://jiurl.)nease(.net)。
我們使用(兩塊字符串之間的距離,相同內(nèi)容的長(zhǎng)度)這樣一對(duì)信息,來(lái)替換后一塊字符串內(nèi)容,得到http://jiurl.yeah.net(22,13)nease(23,4)。
(22,13)中,22表示后一塊http://jiurl.與前一塊http://jiurl.中任意兩個(gè)相同字符之間的距離,如后一個(gè)h與前一個(gè)h的距離;13為相同內(nèi)容的長(zhǎng)度;(23,4)同理,此處不再贅述。
從上述例子中可看出,由于(兩塊字符串之間的距離,相同內(nèi)容的長(zhǎng)度)這一對(duì)信息的大小,小于被替換內(nèi)容的大小,所以文件得到了壓縮。
具體地,lz77算法使用滑動(dòng)窗口尋找匹配串:
即lz77算法使用"滑動(dòng)窗口"的方法,來(lái)尋找文件中的相同部分,文件中相同部分即匹配串。首先,對(duì)匹配串做一個(gè)說(shuō)明,匹配串是指一個(gè)任意字節(jié)的序列,不僅僅是可以在文本文件中顯示出來(lái)的那些字節(jié)的序列,還可以是包括標(biāo)點(diǎn)符號(hào)的序列。這里的串強(qiáng)調(diào)的是它在文件中的位置,它的長(zhǎng)度隨著匹配的情況而變化。具體地:
lz77從文件的開(kāi)始處開(kāi)始,一個(gè)字節(jié)一個(gè)字節(jié)的向后進(jìn)行處理。本發(fā)明實(shí)施例中,滑動(dòng)窗口的長(zhǎng)度是固定的,該滑動(dòng)窗口的終止位置在當(dāng)前處理字節(jié)之前,并且緊挨著當(dāng)前處理字節(jié),隨著處理的字節(jié)不斷的向后滑動(dòng),就象在陽(yáng)光下,飛機(jī)的影子滑過(guò)大地一樣。對(duì)于文件中的每個(gè)字節(jié),用當(dāng)前處理字節(jié)開(kāi)始的串,和窗口中的每個(gè)串進(jìn)行匹配,以尋找最長(zhǎng)的匹配串。
窗口中的每個(gè)串指窗口中每個(gè)字節(jié)開(kāi)始的串。如果當(dāng)前處理字節(jié)開(kāi)始的串在窗口中有匹配串,就用(之間的距離,匹配長(zhǎng)度)這樣一對(duì)信息,來(lái)替換當(dāng)前串,然后從剛才處理完的串之后的下一個(gè)字節(jié),繼續(xù)處理。如果當(dāng)前處理字節(jié)開(kāi)始的串在窗口中沒(méi)有匹配串,就不做改動(dòng)的輸出當(dāng)前處理字節(jié)。
處理文件中第一個(gè)字節(jié)的時(shí)候,窗口在當(dāng)前處理字節(jié)之前,也就是還沒(méi)有滑到文件上,這時(shí)窗口中沒(méi)有任何內(nèi)容,被處理的字節(jié)就會(huì)不做改動(dòng)的輸出。隨著處理的不斷向后,窗口越來(lái)越多的滑入文件,最后整個(gè)窗口滑入文件,然后整個(gè)窗口在文件上向后滑動(dòng),直到整個(gè)文件結(jié)束。
需要說(shuō)明的是,匹配串的長(zhǎng)度有所限制,即本實(shí)施例中,設(shè)置了最小匹配串和最大匹配串,必須限制通過(guò)滑動(dòng)窗口匹配出來(lái)的字符串大于該最小匹配串并且小于該最大匹配串,才會(huì)進(jìn)行壓縮,若是匹配出來(lái)的字符串小于該最小匹配串,或大于該最大匹配串,則不會(huì)進(jìn)行后續(xù)的壓縮操作。
為更好理解本實(shí)施例,舉例如下:
假設(shè)文本字符串為:aaababaaac,當(dāng)前有一個(gè)6個(gè)字符的滑動(dòng)窗口,表示滑動(dòng)窗口中一次性最多包含6個(gè)字符。
編碼的第一步:滑動(dòng)窗口是一個(gè)空窗口,此時(shí)滑動(dòng)窗口還不需要滑動(dòng),將滑動(dòng)窗口與滑動(dòng)窗口外的文本字符串第一位字符進(jìn)行比對(duì),發(fā)現(xiàn)不存在匹配的字符,此時(shí)將滑動(dòng)窗口往右移動(dòng)一位,也就是將滑動(dòng)窗口從右滑入文本字符串,那么字符串首字母進(jìn)入該滑動(dòng)窗口,此時(shí)滑動(dòng)窗口顯示字符a;
編碼的第二步:由于滑動(dòng)窗口內(nèi)部只有字符a,滑動(dòng)窗口外緊接著出現(xiàn)字符a,雖然滑動(dòng)窗口里面和外面存在匹配的字符a,但是為了保證字符編碼的效率,事先設(shè)置最小匹配串,如將最小匹配串設(shè)置為2個(gè)字符,由于此時(shí)只有一個(gè)字符a匹配,不符合要求,那么滑動(dòng)窗口保持不動(dòng),將處理的字符往右移動(dòng)一位,即與滑動(dòng)窗口進(jìn)行比對(duì)的字符就是aa,此時(shí)滑動(dòng)窗口內(nèi)只有一個(gè)字符a,因此,不存在匹配的字符,那么將該滑動(dòng)窗口繼續(xù)向右滑動(dòng),那么文本字符串的第二個(gè)字符也進(jìn)入滑動(dòng)窗口,此時(shí)滑動(dòng)窗口中出現(xiàn)了兩個(gè)一樣的字符a。
編碼的第三步:當(dāng)滑動(dòng)窗口內(nèi)部存在兩個(gè)相同的字符a時(shí),將滑動(dòng)窗口內(nèi)部的兩個(gè)字符a與窗口外的字符進(jìn)行比對(duì),由于滑動(dòng)窗口外緊接著的兩個(gè)字符是ab,不匹配,因此滑動(dòng)窗口繼續(xù)右滑,當(dāng)滑動(dòng)窗口滑動(dòng)出現(xiàn)aaa時(shí),滑動(dòng)窗口外緊接著出現(xiàn)的字符是bab,與滑動(dòng)窗口內(nèi)的字符不匹配,那么滑動(dòng)窗口繼續(xù)向右滑動(dòng),以使得滑動(dòng)窗口內(nèi)部出現(xiàn)aaab,此時(shí),由于滑動(dòng)窗口內(nèi)部的字符ab與滑動(dòng)窗口外部緊接著的字符ab匹配,認(rèn)為找到了相似長(zhǎng)度為2的ab,因此滑動(dòng)窗口外的ab滿(mǎn)足最小匹配串的要求,因此一對(duì)〈長(zhǎng)度,距離〉就被輸出了,長(zhǎng)度(length)是2并且向后距離也是2,所以輸出為<2,2>。
編碼的第四步:當(dāng)后一個(gè)字符串a(chǎn)b用<2,2>輸出之后,該段字符串就相當(dāng)于刪除了,此時(shí)將滑動(dòng)窗口與剩下的文本字符串進(jìn)行比對(duì),剩下的文本字符串為aaac,通過(guò)該滑動(dòng)窗口比對(duì)時(shí),在將aaac中的前兩個(gè)aa與滑動(dòng)窗口進(jìn)行比對(duì)時(shí),雖然aa與滑動(dòng)窗口出現(xiàn)相同內(nèi)容和長(zhǎng)度的字符,并且符合最小字符串,但是為了提高壓縮效率,會(huì)繼續(xù)判斷文本字符串后面是否還有匹配的字符串,若此時(shí)檢測(cè)到出還有一個(gè)字符a,即剛好有文本字符串a(chǎn)aa與滑動(dòng)窗口內(nèi)的三個(gè)字符a相同,那么確定剩下的文本字符串a(chǎn)aa與滑動(dòng)窗口內(nèi)aaa的距離以及相同字符串的長(zhǎng)度,此時(shí)由于刪除了原本字符串中的后一個(gè)ab,因此aaa與滑動(dòng)窗口內(nèi)aaa的距離是4,相同的內(nèi)容長(zhǎng)度是3,可輸出<4,3>。
編碼的第五步:輸出<4,3>之后,該文本字符串中還需要處理的字符只有c,由于該滑動(dòng)窗口中的字符是aaab,不匹配,因此滑動(dòng)窗口向右滑動(dòng)一位,將字符c也滑進(jìn)該滑動(dòng)窗口,那么滑動(dòng)窗口內(nèi)的字符就為aaabc。由于后續(xù)沒(méi)有內(nèi)容需要處理,那么將該滑動(dòng)窗口內(nèi)的所有字符都輸出,最終得到的編碼串為aaab<2,2><4,3>c。
使用lz77算法進(jìn)行壓縮和解壓縮
為了在解壓縮時(shí),可以區(qū)分“沒(méi)有匹配的字節(jié)”和“(之間的距離,匹配長(zhǎng)度)對(duì)”,還需要在每個(gè)“沒(méi)有匹配的字節(jié)”或者“(之間的距離,匹配長(zhǎng)度)對(duì)”之前,放上一位,來(lái)指明是“沒(méi)有匹配的字節(jié)”,還是“(之間的距離,匹配長(zhǎng)度)對(duì)”。本發(fā)明實(shí)施例中,可選用0表示“沒(méi)有匹配的字節(jié)”,用1表示“(之間的距離,匹配長(zhǎng)度)對(duì)”。
實(shí)際應(yīng)用中,固定(之間的距離,匹配長(zhǎng)度)對(duì)中的,“之間的距離”和“匹配長(zhǎng)度”所使用的位數(shù)。由于要固定“之間的距離”所使用的位數(shù),所以才使用了固定大小的窗口,比如窗口的大小為32kb,那么用15位(2^15=32k)就可以保存0-32k范圍內(nèi)的任何一個(gè)值。此外,還將限定最大的匹配長(zhǎng)度,這樣一來(lái),“匹配長(zhǎng)度”所使用的位數(shù)也就固定了。
實(shí)際應(yīng)用中,還將設(shè)定一個(gè)最小匹配長(zhǎng)度,只有當(dāng)兩個(gè)串的匹配長(zhǎng)度大于最小匹配長(zhǎng)度時(shí),才認(rèn)為是一個(gè)匹配。為更好理解,舉一個(gè)例子來(lái)說(shuō)明這樣做的原因:比如,“距離”使用15位,“長(zhǎng)度”使用8位,那么“(之間的距離,匹配長(zhǎng)度)對(duì)”將使用23位,也就是差1位3個(gè)字節(jié)。如果匹配長(zhǎng)度小于3個(gè)字節(jié)的話(huà),那么用“(之間的距離,匹配長(zhǎng)度)對(duì)”進(jìn)行替換的話(huà),不但沒(méi)有壓縮,反而會(huì)增大,所以需要一個(gè)最小匹配長(zhǎng)度。
壓縮:
從文件的開(kāi)始到文件結(jié)束,一個(gè)字節(jié)一個(gè)字節(jié)的向后進(jìn)行處理。用當(dāng)前處理字節(jié)開(kāi)始的串,和滑動(dòng)窗口中的每個(gè)串進(jìn)行匹配,尋找最長(zhǎng)的匹配串。如果當(dāng)前處理字節(jié)開(kāi)始的串在窗口中有匹配串,就先輸出一個(gè)標(biāo)志位,表明下面是一個(gè)(之間的距離,匹配長(zhǎng)度)對(duì),然后輸出(之間的距離,匹配長(zhǎng)度)對(duì),然后從剛才處理完的串之后的下一個(gè)字節(jié),繼續(xù)處理。如果當(dāng)前處理字節(jié)開(kāi)始的串在窗口中沒(méi)有匹配串,就先輸出一個(gè)標(biāo)志位,表明下面是一個(gè)沒(méi)有改動(dòng)的字節(jié),然后不做改動(dòng)的輸出當(dāng)前處理字節(jié),然后繼續(xù)處理當(dāng)前處理字節(jié)的下一個(gè)字節(jié)。
解壓縮:
從文件開(kāi)始到文件結(jié)束,每次先讀一位標(biāo)志位,通過(guò)這個(gè)標(biāo)志位來(lái)判斷下面是一個(gè)(之間的距離,匹配長(zhǎng)度)對(duì),還是一個(gè)沒(méi)有改動(dòng)的字節(jié)。如果是一個(gè)(之間的距離,匹配長(zhǎng)度)對(duì),就讀出固定位數(shù)的(之間的距離,匹配長(zhǎng)度)對(duì),然后根據(jù)對(duì)中的信息,將匹配串輸出到當(dāng)前位置。如果是一個(gè)沒(méi)有改動(dòng)的字節(jié),就讀出一個(gè)字節(jié),然后輸出這個(gè)字節(jié)。
綜上所述,可以看出,lz77壓縮時(shí)需要做大量的匹配工作,而解壓縮時(shí)需要做的工作很少,也就是說(shuō)解壓縮相對(duì)于壓縮將快的多,這對(duì)于需要進(jìn)行一次壓縮,多次解壓縮的情況,是一個(gè)效果顯著的優(yōu)點(diǎn)。
當(dāng)?shù)谝徽{(diào)制解調(diào)器11通過(guò)上述任一個(gè)壓縮算法對(duì)數(shù)據(jù)包進(jìn)行壓縮之后,再將壓縮后的數(shù)據(jù)包存儲(chǔ)到buffer中進(jìn)行轉(zhuǎn)發(fā)。后續(xù),第二調(diào)制解調(diào)器21即可從buffer中提取出壓縮的數(shù)據(jù)包,并對(duì)提取的壓縮數(shù)據(jù)包進(jìn)行解壓,其中,解壓的方式也包括兩種:當(dāng)?shù)谝徽{(diào)制解調(diào)器11是加密壓縮時(shí),所述第二調(diào)制解調(diào)器21采用對(duì)應(yīng)的密文進(jìn)行解壓,當(dāng)?shù)谝徽{(diào)制解調(diào)器11是明文壓縮時(shí),所述第二調(diào)制解調(diào)器21即可直接進(jìn)行解壓,以得到解壓后的數(shù)據(jù)包。由于本實(shí)施例中的各個(gè)壓縮算法主要是明文算法,因此,解壓的方式也是明文解壓。
可以理解,本方案中,在移動(dòng)終端100中的電信卡傳輸?shù)臄?shù)據(jù)包較大時(shí),第二調(diào)制解調(diào)器21在request中添加標(biāo)識(shí),使第一調(diào)制解調(diào)器11對(duì)數(shù)據(jù)包進(jìn)行壓縮,以改變數(shù)據(jù)包的期望值,后續(xù)緩存到buffer的數(shù)據(jù)包就不會(huì)超出buffer的容量值,那么,避免了大數(shù)據(jù)包傳輸導(dǎo)致死機(jī)的問(wèn)題,同時(shí)數(shù)據(jù)包不會(huì)被拆分成多個(gè)數(shù)據(jù)包,避免了數(shù)據(jù)包轉(zhuǎn)發(fā)不完整的情況。
本發(fā)明進(jìn)一步提供一種數(shù)據(jù)包傳輸方法。
參照?qǐng)D4,圖4為本發(fā)明數(shù)據(jù)包傳輸方法第一實(shí)施例的流程示意圖。
本實(shí)施例提出一種數(shù)據(jù)包識(shí)別方法,在本實(shí)施例中,提供了數(shù)據(jù)包傳輸方法的實(shí)施例,需要說(shuō)明的是,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
本發(fā)明中,數(shù)據(jù)包傳輸方法應(yīng)用于移動(dòng)終端,所述移動(dòng)終端包括基于預(yù)設(shè)接口連接的第一處理芯片001和第二處理芯片002、與所述第一處理芯片001連接的第一射頻模塊12、以及與所述第二處理芯片002連接的第二射頻模塊22,所述第一處理芯片001包括內(nèi)嵌有虛擬用戶(hù)識(shí)別卡10a的第一應(yīng)用處理器10以及與第一用戶(hù)識(shí)別卡13和第二用戶(hù)識(shí)別卡14連接的第一調(diào)制解調(diào)器11,所述第二處理芯片002包括第二應(yīng)用處理器20和第二調(diào)制解調(diào)器21,所述方法包括:
步驟s10,第一調(diào)制解調(diào)器通過(guò)預(yù)設(shè)接口接收第二調(diào)制解調(diào)器發(fā)送的數(shù)據(jù)包獲取請(qǐng)求時(shí),從內(nèi)嵌有虛擬用戶(hù)識(shí)別卡中提取所述數(shù)據(jù)包獲取請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)包;
步驟s20,對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮;
步驟s30,將壓縮后的數(shù)據(jù)包緩存至所述預(yù)設(shè)接口的buffer中,以供第二調(diào)制解調(diào)器從所述buffer中提取壓縮后的數(shù)據(jù)包,以完成數(shù)據(jù)包的傳輸。
在本實(shí)施例中,所述第一調(diào)制解調(diào)器11通過(guò)預(yù)設(shè)接口接收第二調(diào)制解調(diào)器21發(fā)送的數(shù)據(jù)包獲取請(qǐng)求,后續(xù)也是通過(guò)所述預(yù)設(shè)接口將數(shù)據(jù)包反饋至所述第二調(diào)制解調(diào)器21。所述預(yù)設(shè)接口為uart接口。
其中,當(dāng)?shù)诙幚硇酒?02的第二調(diào)制解調(diào)器21通過(guò)第二射頻模塊22接收到基站發(fā)送的數(shù)據(jù)包獲取請(qǐng)求時(shí),先通過(guò)uart將數(shù)據(jù)包獲取請(qǐng)求傳送給第一處理芯片001的第一調(diào)制解調(diào)器11;第一調(diào)制解調(diào)器11接收到該數(shù)據(jù)包獲取請(qǐng)求后,根據(jù)數(shù)據(jù)包獲取請(qǐng)求從虛擬用戶(hù)識(shí)別卡10a中獲取數(shù)據(jù)包;第一調(diào)制解調(diào)器11在獲取到數(shù)據(jù)包之后,為了保證傳輸?shù)臄?shù)據(jù)不會(huì)大于uart的buffer,先對(duì)獲取的數(shù)據(jù)包進(jìn)行壓縮,得到壓縮后的數(shù)據(jù)包;再通過(guò)uart將壓縮后的數(shù)據(jù)包傳送至第二調(diào)制解調(diào)器21;第二調(diào)制解調(diào)器21接收到數(shù)據(jù)包后,再通過(guò)第二射頻模塊22將數(shù)據(jù)包上傳至基站,以完成數(shù)據(jù)包的傳輸。
本實(shí)施例中,第一調(diào)制解調(diào)器11不限于從虛擬用戶(hù)識(shí)別卡10a中獲取數(shù)據(jù)包,當(dāng)然,也可根據(jù)實(shí)際需要在第一用戶(hù)識(shí)別卡13或第二用戶(hù)識(shí)別卡14中獲取數(shù)據(jù)包,第一調(diào)制解調(diào)器11在虛擬用戶(hù)識(shí)別卡10a、第一用戶(hù)識(shí)別卡13或第二用戶(hù)識(shí)別卡14中獲取數(shù)據(jù)包的方式一致,下文為了簡(jiǎn)述,僅以在虛擬用戶(hù)識(shí)別卡10a中獲取數(shù)據(jù)包為例,其它兩種不再贅述。
具體地,所述步驟s10包括:
步驟a,所述第一調(diào)制解調(diào)器向虛擬用戶(hù)識(shí)別卡中的片內(nèi)操作系統(tǒng)發(fā)送數(shù)據(jù)包獲取請(qǐng)求,由所述片內(nèi)操作系統(tǒng)在虛擬用戶(hù)識(shí)別卡中的文件存儲(chǔ)模塊中提取所述數(shù)據(jù)包獲取請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)包,并反饋至所述第一調(diào)制解調(diào)器;
步驟b,所述第一調(diào)制解調(diào)器接收片內(nèi)操作系統(tǒng)反饋的數(shù)據(jù)包。
在本實(shí)施例中,需要說(shuō)明的是,虛擬用戶(hù)識(shí)別卡10a中的數(shù)據(jù)包存儲(chǔ)在文件存儲(chǔ)模塊中,當(dāng)?shù)谝徽{(diào)制解調(diào)器11要獲取虛擬用戶(hù)識(shí)別卡10a中的數(shù)據(jù)包時(shí),第一調(diào)制解調(diào)器11不會(huì)直接與虛擬用戶(hù)識(shí)別卡10a中的文件存儲(chǔ)模塊交互,而是先向虛擬用戶(hù)識(shí)別卡10a中的cos(chipoperatingsystem,片內(nèi)操作系統(tǒng))操作系統(tǒng)發(fā)送數(shù)據(jù)包獲取請(qǐng)求即request,然后虛擬用戶(hù)識(shí)別卡10a的cos操作系統(tǒng)基于該request在文件存儲(chǔ)模塊中獲取數(shù)據(jù)包,然后將獲取的數(shù)據(jù)包再傳輸給第一調(diào)制解調(diào)器11,第一調(diào)制解調(diào)器11只要接收cos操作系統(tǒng)反饋的數(shù)據(jù)包即可實(shí)現(xiàn)數(shù)據(jù)包的獲取過(guò)程。
可以理解,由于第一調(diào)制解調(diào)器11無(wú)法在虛擬用戶(hù)識(shí)別卡10a中的文件存儲(chǔ)模塊直接提取數(shù)據(jù)包,因此通過(guò)與虛擬用戶(hù)識(shí)別卡10a的cos操作系統(tǒng)進(jìn)行交互,以實(shí)現(xiàn)數(shù)據(jù)包的提取,保證后續(xù)的數(shù)據(jù)傳輸過(guò)程正常運(yùn)行。
當(dāng)?shù)谝徽{(diào)制解調(diào)器11從虛擬用戶(hù)識(shí)別卡10a中提取出數(shù)據(jù)包獲取請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)包之后,再對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮,本實(shí)施例中,第一調(diào)制解調(diào)器11對(duì)數(shù)據(jù)包進(jìn)行壓縮時(shí),可以采用加密壓縮的方式進(jìn)行數(shù)據(jù)包的壓縮,也可以直接采用明文進(jìn)行壓縮。由于傳輸?shù)膕im卡網(wǎng)絡(luò)鑒權(quán)數(shù)據(jù)量比較小,為了減少加密解密等操作而導(dǎo)致數(shù)據(jù)傳輸效率低,本發(fā)明實(shí)施例優(yōu)選采用明文壓縮的方式對(duì)數(shù)據(jù)包進(jìn)行壓縮,即本方案中采用的壓縮算法以簡(jiǎn)單高效為主,具體采用的壓縮算法和壓縮過(guò)程在下文實(shí)施例中詳述。
第一調(diào)制解調(diào)器11對(duì)數(shù)據(jù)包壓縮之后,即可將壓縮后的數(shù)據(jù)包緩存至所述預(yù)設(shè)接口uart的buffer中,以供第二調(diào)制解調(diào)器21從所述buffer中提取壓縮后的數(shù)據(jù)包,以完成數(shù)據(jù)包的傳輸。
本實(shí)施例中需要說(shuō)明的是,buffer存在于uart接口的兩端,即uart接口的兩端分別設(shè)置有buffer1和buffer2。當(dāng)?shù)诙{(diào)制解調(diào)器21通過(guò)第二射頻模塊22接收到基站發(fā)送的數(shù)據(jù)獲取請(qǐng)求時(shí),將數(shù)據(jù)包獲取請(qǐng)求通過(guò)uart接口發(fā)送給第一調(diào)制解調(diào)器11,第一調(diào)制解調(diào)器11從虛擬用戶(hù)識(shí)別卡10a提取出數(shù)據(jù)包之后,先將提取的數(shù)據(jù)包存儲(chǔ)到buffer1中中,以通過(guò)uart傳輸至第二調(diào)制解調(diào)器21的buffer2中,第二調(diào)制解調(diào)器21再?gòu)腷uffer2中獲取數(shù)據(jù)包。
本實(shí)施例提出的數(shù)據(jù)包傳輸方法,第一調(diào)制解調(diào)器通過(guò)預(yù)設(shè)接口接收第二調(diào)制解調(diào)器發(fā)送的數(shù)據(jù)包獲取請(qǐng)求時(shí),先從虛擬用戶(hù)識(shí)別卡中提取所述數(shù)據(jù)包獲取請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)包,然后對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮,再將壓縮后的數(shù)據(jù)包緩存至所述預(yù)設(shè)接口的buffer中,以供第二調(diào)制解調(diào)器從所述buffer中提取壓縮后的數(shù)據(jù)包,以完成數(shù)據(jù)包的傳輸。本方案在傳輸數(shù)據(jù)包時(shí),先對(duì)待傳輸?shù)臄?shù)據(jù)包進(jìn)行壓縮,再將壓縮后的數(shù)據(jù)包進(jìn)行傳輸,使得傳輸?shù)臄?shù)據(jù)包的容量值有所減小,避免了數(shù)據(jù)傳輸過(guò)程中移動(dòng)終端死機(jī)的情況。
進(jìn)一步地,基于第一實(shí)施例提出本發(fā)明數(shù)據(jù)包傳輸方法第二實(shí)施例。
數(shù)據(jù)包傳輸方法第二實(shí)施例與數(shù)據(jù)包傳輸方法第一實(shí)施例的區(qū)別在于,所述步驟s20之前,所述方法還包括:
所述第一調(diào)制解調(diào)器判斷能否從所述數(shù)據(jù)包獲取請(qǐng)求中提取出第二調(diào)制解調(diào)器添加的壓縮標(biāo)識(shí);
若能提取出壓縮標(biāo)識(shí),則執(zhí)行所述步驟s20。
在本實(shí)施例中,當(dāng)?shù)诙{(diào)制解調(diào)器21向第一調(diào)制解調(diào)器11發(fā)送數(shù)據(jù)包獲取請(qǐng)求(request)之前,為了防止傳輸?shù)臄?shù)據(jù)包過(guò)大,第二調(diào)制解調(diào)器21發(fā)送request時(shí),先確定是否需要在request中添加壓縮標(biāo)識(shí),若需要,則先在request中添加一個(gè)壓縮標(biāo)識(shí),如添加字段01,以告知第一調(diào)制解調(diào)器11對(duì)待發(fā)送的數(shù)據(jù)包進(jìn)行壓縮。
需要說(shuō)明的是,由于待傳輸?shù)臄?shù)據(jù)是根據(jù)通訊協(xié)議標(biāo)準(zhǔn)確定的,因此,第二調(diào)制解調(diào)器21可以得知即將獲取的數(shù)據(jù)包的數(shù)據(jù)類(lèi)型和數(shù)據(jù)大小,那么,當(dāng)?shù)诙{(diào)制解調(diào)器21發(fā)送request之前,先判斷當(dāng)前待獲取的數(shù)據(jù)包的大小,若待獲取的數(shù)據(jù)包的大小超出了buffer的容量值,則第二調(diào)制解調(diào)器21在request中添加壓縮標(biāo)識(shí),以告知第一調(diào)制解調(diào)器11對(duì)待傳輸?shù)臄?shù)據(jù)包進(jìn)行壓縮,若第二調(diào)制解調(diào)器21判斷待獲取的數(shù)據(jù)包的大小未超出buffer的容量值,則直接發(fā)送request即可,無(wú)需添加壓縮標(biāo)識(shí)。
在本實(shí)施例中,第二調(diào)制解調(diào)器21發(fā)送request之前,對(duì)待獲取的數(shù)據(jù)包的大小進(jìn)行識(shí)別,僅在待獲取的數(shù)據(jù)包超出buffer的容量值時(shí),才在request添加壓縮標(biāo)識(shí),避免了所有的數(shù)據(jù)包獲取請(qǐng)求都添加壓縮標(biāo)識(shí),縮短了數(shù)據(jù)包傳輸?shù)臅r(shí)間,提高了數(shù)據(jù)包傳輸?shù)男省?/p>
當(dāng)?shù)谝徽{(diào)制解調(diào)器11通過(guò)預(yù)設(shè)接口(uart)接收第二調(diào)制解調(diào)器21發(fā)送的數(shù)據(jù)包獲取請(qǐng)求時(shí),先對(duì)所述數(shù)據(jù)包獲取請(qǐng)求進(jìn)行解析,以確定能否從所述數(shù)據(jù)包獲取請(qǐng)求中提取出第二調(diào)制解調(diào)器21添加的壓縮標(biāo)識(shí),若在所述數(shù)據(jù)包獲取請(qǐng)求中提取出壓縮標(biāo)識(shí),此時(shí),所述第一調(diào)制解調(diào)器11即可對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮,后續(xù)再將壓縮后的數(shù)據(jù)包緩存至所述預(yù)設(shè)接口的buffer1中,并通過(guò)uart傳輸至buffer2中,以供第二調(diào)制解調(diào)器21從所述buffer2中提取壓縮后的數(shù)據(jù)包,以完成數(shù)據(jù)包的傳輸。
在本實(shí)施例中,數(shù)據(jù)包傳輸過(guò)程是發(fā)生第一調(diào)制解調(diào)器11和第二調(diào)制解調(diào)器21喚醒之后,那么當(dāng)?shù)谝徽{(diào)制解調(diào)器11和第二調(diào)制解調(diào)器21喚醒之后,若第二調(diào)制解調(diào)器21通過(guò)第二射頻模塊22接收到基站發(fā)生的數(shù)據(jù)包獲取請(qǐng)求,執(zhí)行以下操作:
判斷:先確定待獲取的數(shù)據(jù)包的大小,以判斷是否需要添加壓縮標(biāo)識(shí);
決策:若待獲取的數(shù)據(jù)包超過(guò)uart的buffer的容量,則在發(fā)送數(shù)據(jù)包獲取請(qǐng)求之前,在數(shù)據(jù)包獲取請(qǐng)求添加壓縮標(biāo)識(shí);
發(fā)送:在數(shù)據(jù)包獲取請(qǐng)求添加壓縮標(biāo)識(shí)之后,發(fā)送數(shù)據(jù)包獲取請(qǐng)求。
第一調(diào)制解調(diào)器11通過(guò)uart接收到數(shù)據(jù)包獲取請(qǐng)求時(shí),執(zhí)行以下操作:
提取:確定能否從數(shù)據(jù)包獲取請(qǐng)求中提取出壓縮標(biāo)識(shí),若能,則提取出壓縮標(biāo)識(shí);
壓縮:基于提取的壓縮標(biāo)識(shí),對(duì)從虛擬用戶(hù)識(shí)別卡10a提取的數(shù)據(jù)包進(jìn)行壓縮;
反饋:反饋壓縮的數(shù)據(jù)包。
最終,第二調(diào)制解調(diào)器21通過(guò)uart接收第一調(diào)制解調(diào)器11反饋的數(shù)據(jù)包,以完成數(shù)據(jù)包傳輸過(guò)程。上述的操作過(guò)程,可參照?qǐng)D3。
需要說(shuō)明的是,第二調(diào)制解調(diào)器21發(fā)送的是數(shù)據(jù)包獲取請(qǐng)求,由于數(shù)據(jù)包獲取請(qǐng)求一般都小于buffer的容量,因此可不對(duì)數(shù)據(jù)包獲取請(qǐng)求進(jìn)行壓縮。
在本實(shí)施例中,第一調(diào)制解調(diào)器11在對(duì)數(shù)據(jù)包進(jìn)行壓縮之前,先判斷能否從所述數(shù)據(jù)包獲取請(qǐng)求中提取出第二調(diào)制解調(diào)器21添加的壓縮標(biāo)識(shí),若能提取出壓縮標(biāo)識(shí),才對(duì)數(shù)據(jù)包進(jìn)行壓縮,防止數(shù)據(jù)包小于buffer的容量時(shí)也進(jìn)行壓縮,以防止系統(tǒng)資源的浪費(fèi),并且節(jié)省了數(shù)據(jù)包傳輸?shù)臅r(shí)間,從而提高了數(shù)據(jù)包傳輸?shù)男省?/p>
進(jìn)一步地,基于第一實(shí)施例提出本發(fā)明數(shù)據(jù)包傳輸方法第三實(shí)施例。
數(shù)據(jù)包傳輸方法第三實(shí)施例與數(shù)據(jù)包傳輸方法第一實(shí)施例的區(qū)別在于,所述步驟s20之前,所述方法還包括:
所述第一調(diào)制解調(diào)器對(duì)提取的所述數(shù)據(jù)包進(jìn)行解析,以得到所述數(shù)據(jù)包的包頭;
基于所述數(shù)據(jù)包的包頭確定所述數(shù)據(jù)包的長(zhǎng)度;
在所述數(shù)據(jù)包的長(zhǎng)度大于預(yù)設(shè)閾值時(shí),執(zhí)行所述步驟s20。
在本實(shí)施例中,所述第一調(diào)制解調(diào)器11對(duì)數(shù)據(jù)包進(jìn)行壓縮之前,先對(duì)從第一用戶(hù)識(shí)別卡13或第二用戶(hù)識(shí)別卡14中提取的數(shù)據(jù)包進(jìn)行解析,以得到所述數(shù)據(jù)包的包頭,然后從包頭中獲取數(shù)據(jù)包的長(zhǎng)度,以確定該數(shù)據(jù)包的大小。其中,數(shù)據(jù)包為tlv格式,tlv格式是ber(basicencodingrules,基本編碼規(guī)則)編碼的一種,全稱(chēng)為type(類(lèi)型),length(長(zhǎng)度),value(值),t字段表示數(shù)據(jù)包的類(lèi)型,l字段表示數(shù)據(jù)包的長(zhǎng)度、v字段用于存放數(shù)據(jù)包的內(nèi)容。
本實(shí)施例中,該數(shù)據(jù)包的生成過(guò)程為:傳輸層獲取到數(shù)據(jù)包對(duì)應(yīng)的原始數(shù)據(jù),并為原始數(shù)據(jù)添加傳輸層的數(shù)據(jù)包頭,數(shù)據(jù)包頭包括傳輸層數(shù)據(jù)類(lèi)型和數(shù)據(jù)長(zhǎng)度,得到初始數(shù)據(jù)包,并將初始數(shù)據(jù)包傳輸至傳輸復(fù)用層。當(dāng)傳輸復(fù)用層接收到初始數(shù)據(jù)包后,為初始化數(shù)據(jù)包添加傳輸復(fù)用層的數(shù)據(jù)包頭,數(shù)據(jù)包頭包括復(fù)用層的數(shù)據(jù)類(lèi)型和數(shù)據(jù)長(zhǎng)度,得到數(shù)據(jù)包,并調(diào)用物理驅(qū)動(dòng)層的發(fā)送接口將該數(shù)據(jù)包發(fā)送給物理層。后續(xù),第一調(diào)制解調(diào)器11對(duì)提取的所述數(shù)據(jù)包進(jìn)行解析,就是從物理層(物理傳輸介質(zhì))之上的物理驅(qū)動(dòng)層檢測(cè)數(shù)據(jù)包的包頭,以解析得到數(shù)據(jù)包的大小(長(zhǎng)度)。
當(dāng)?shù)谝徽{(diào)制解調(diào)器11確定數(shù)據(jù)包的長(zhǎng)度后,再判斷該數(shù)據(jù)包的長(zhǎng)度是否大于預(yù)設(shè)閾值(即buffer的容量值)。在本實(shí)施例中,所述預(yù)設(shè)閾值可選為512字節(jié),在其它實(shí)施例中,也可以將所述預(yù)設(shè)閾值設(shè)置為其它長(zhǎng)度,在此不再限定。當(dāng)數(shù)據(jù)包的長(zhǎng)度大于所述預(yù)設(shè)閾值時(shí),為了防止數(shù)據(jù)包傳輸導(dǎo)致終端死機(jī),所述第一調(diào)制解調(diào)器11對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮??梢岳斫猓籼崛〉臄?shù)據(jù)包的長(zhǎng)度小于預(yù)設(shè)閾值,所述第一調(diào)制解調(diào)器11可直接通過(guò)uart接口發(fā)送該數(shù)據(jù)包至第二調(diào)制解調(diào)器21。
在本實(shí)施例中,在對(duì)數(shù)據(jù)包進(jìn)行壓縮之前,所述第一調(diào)制解調(diào)器對(duì)提取的所述數(shù)據(jù)包進(jìn)行解析,以得到所述數(shù)據(jù)包的包頭,再確定所述數(shù)據(jù)包的長(zhǎng)度,僅在數(shù)據(jù)包的長(zhǎng)度大于預(yù)設(shè)閾值時(shí),才對(duì)提取的數(shù)據(jù)包進(jìn)行壓縮,從而提高了數(shù)據(jù)包壓縮的準(zhǔn)確性。
進(jìn)一步地,基于第一至第三實(shí)施例提出本發(fā)明數(shù)據(jù)包傳輸方法第四實(shí)施例。
數(shù)據(jù)包傳輸方法第四實(shí)施例與數(shù)據(jù)包傳輸方法第一至第三實(shí)施例的區(qū)別在于,所述步驟s20包括:
步驟a、所述第一調(diào)制解調(diào)器獲取所述數(shù)據(jù)包對(duì)應(yīng)的源文本;
步驟b、確定源文本中出現(xiàn)頻率大于預(yù)設(shè)頻率的字符段;
步驟c、在預(yù)設(shè)字典列表中,查找所述字符段對(duì)應(yīng)的編碼,其中,編碼的長(zhǎng)度小于對(duì)應(yīng)的字符段的長(zhǎng)度;
步驟d、通過(guò)查找的編碼代替對(duì)應(yīng)的字符段,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。
在本實(shí)施例中,所述第一調(diào)制解調(diào)器11對(duì)數(shù)據(jù)包進(jìn)行壓縮,具體地,先獲取數(shù)據(jù)包對(duì)應(yīng)的源文本,然后確定源文本中出現(xiàn)頻率大于預(yù)設(shè)頻率的字符段,再?gòu)念A(yù)設(shè)字典列表中,查找所述字符段對(duì)應(yīng)的編碼,其中,編碼的長(zhǎng)度小于對(duì)應(yīng)的字符段的長(zhǎng)度,最終通過(guò)查找的編碼代替對(duì)應(yīng)的字符段,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。
該過(guò)程涉及的算法為字典算法,字典算法是最為簡(jiǎn)單的壓縮算法之一。該字典算法把文本中出現(xiàn)頻率大于預(yù)設(shè)一定值的單詞或詞匯組合做成一個(gè)對(duì)應(yīng)的字典列表,并用特殊代碼來(lái)表示這個(gè)單詞或詞匯,例如,當(dāng)前的字典列表中:
00=chinese
01=people
02=china
若當(dāng)期數(shù)據(jù)包中的源文本為:iamachinesepeople,iamfromchina。那么,采用該字典算法,壓縮后的編碼為:iama0001,iamfrom02。
可以理解,壓縮編碼后的長(zhǎng)度顯著縮小,這樣的編碼專(zhuān)有名詞或者固定組合較多的內(nèi)容中,壓縮效率十分顯著,將預(yù)定的文本內(nèi)容用字典中預(yù)定的編碼映射替代,解壓縮的時(shí)候執(zhí)行反向還原即可。
進(jìn)一步地,所述步驟a之后,所述步驟s20還包括:
步驟e、依次確定源文本中高四位為零且相鄰的任兩個(gè)字符段;
步驟f、將所述任兩個(gè)字符段的高四位進(jìn)行刪除,并將所述任兩個(gè)字符段的低四位進(jìn)行組合,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。
即,所述第一調(diào)制解調(diào)器11獲取到數(shù)據(jù)包對(duì)應(yīng)的源文本之后,還可依次確定源文本中高四位為零且相鄰的任兩個(gè)字符段,再將任兩個(gè)字符段的高四位進(jìn)行刪除,并將任兩個(gè)字符段的低四位進(jìn)行組合,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。
該過(guò)程涉及的算法為固定位長(zhǎng)算法(fixedbitlengthpacking),這種算法是把文本用需要的最少的位來(lái)進(jìn)行壓縮編碼。比如:八個(gè)十六進(jìn)制數(shù):1,2,3,4,5,6,7,8。轉(zhuǎn)換為二進(jìn)制為:00000001,00000010,00000011,00000100,00000101,00000110,00000111,00001000。每個(gè)數(shù)只用到了低4位,而高4位沒(méi)有用到(全為0),因此對(duì)低4位進(jìn)行壓縮編碼后得到:0001,0010,0011,0100,0101,0110,0111,1000。然后兩兩補(bǔ)充為8位字節(jié)得到:00010010,00110100,01010110,01111000。所以原來(lái)的八個(gè)十六進(jìn)制數(shù)縮短了一半,得到4個(gè)十六進(jìn)制數(shù):12,34,56,78。
可以理解,通過(guò)這種組合方式,將需要用到的位數(shù)進(jìn)行了縮小,使得數(shù)據(jù)包的容量有所減小,同理,解壓時(shí)執(zhí)行反響拆分添加組合即可。
進(jìn)一步地,所述步驟a之后,所述步驟s20還包括:
步驟g、對(duì)源文本中連續(xù)出現(xiàn)的字符,采用重復(fù)次數(shù)加字符進(jìn)行代替,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。
即,所述第一調(diào)制解調(diào)器11獲取到數(shù)據(jù)包對(duì)應(yīng)的源文本之后,還可對(duì)源文本中連續(xù)出現(xiàn)的字符,采用重復(fù)次數(shù)加字符進(jìn)行代替,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。
該過(guò)程涉及的算法為rle(runlengthencoding,游程編碼,又譯行程長(zhǎng)度編碼)算法,這種壓縮編碼是一種變長(zhǎng)的編碼,rle根據(jù)文本不同的具體情況會(huì)有不同的壓縮編碼變體與之相適應(yīng),以產(chǎn)生更大的壓縮比率。具體地:
變體1:重復(fù)次數(shù)+字符
文本字符串:aaabbbccccdddd,編碼后得到:3a3b4c4d;通過(guò)該變體算法,即可將數(shù)據(jù)包終端文本字符串進(jìn)行壓縮。
變體2:特殊字符+重復(fù)次數(shù)+字符
文本字符串:aaaaabccccbccc,編碼后得到:bb5abb4cbb3c;其中,該編碼串的最開(kāi)始說(shuō)明特殊字符為b,然后再添加一個(gè)b,b后面跟著的數(shù)字就表示出重復(fù)的次數(shù)。也就是說(shuō),文本串字符采用該變體2算法進(jìn)行編碼壓縮時(shí),先在編碼后的編碼串的首字母說(shuō)明特殊字符為b,然后由于后面緊接著出現(xiàn)5個(gè)字符a,需要在這5個(gè)字符a之前添加一個(gè)特殊字符即字符b,因此就是bb5a,在5a之后出現(xiàn)b,且b之后又出現(xiàn)3個(gè)c,因此,需要在3個(gè)c之前再添加一個(gè)特殊字符b,與前面連接起來(lái)就是bb5abb4c,后面采用同樣的方式,即可得到最終的編碼串bb5abb4cbb3c。
為了更清楚理解該方案,舉另一個(gè)例子:文本字符串仍然為:aaaaabccccbccc,若當(dāng)前編碼串的最開(kāi)始說(shuō)明特殊字符為d,那么,編碼后得到:dd5abd4cbd3c。
變體3:
把文本每個(gè)字節(jié)分組成塊,每個(gè)字符最多重復(fù)127次。每個(gè)塊以一個(gè)特殊字節(jié)開(kāi)頭。那個(gè)特殊字節(jié)的第7位如果被置位,那么剩下的7位數(shù)值就是后面的字符的重復(fù)次數(shù)。如果第7位沒(méi)有被置位,那么剩下7位就是后面沒(méi)有被壓縮的字符的數(shù)量。
例如:文本字符串:aaaaabcdefff,編碼后得到:85a4bcde83f(85h=10000101b、4h=00000100b、83h=10000011b)。其中,先將文本字符串分組成三個(gè)塊,分別是aaaaa、bcde和fff,三個(gè)快對(duì)應(yīng)的特殊字符分別是10000101、00000100和10000011,由于10000101中第7位被置位為1,因此剩下的7位數(shù)值為后面的字符的重復(fù)次數(shù),此時(shí)可知剩下的7位數(shù)值對(duì)應(yīng)的值為5,即可得到85a;同理,由于00000100中的第7位沒(méi)有被置位為1,那么剩下7位是后面沒(méi)有被壓縮的字符的數(shù)量,可知此時(shí)剩下7位對(duì)應(yīng)的值為4,即可得到4bcde;同理可確定83f,此處不在贅述。
需要說(shuō)明的是,以上所列舉出的三種3種rle變體算法僅僅是較佳的幾種變體算法,本領(lǐng)域技術(shù)人員利用本發(fā)明的技術(shù)思想,根據(jù)其具體需求所提出的其它rle變體算法均在本發(fā)明的保護(hù)范圍內(nèi),在此不進(jìn)行一一窮舉。
進(jìn)一步地,所述步驟a之后,所述步驟s20還包括:
步驟h、確定源文本中是否存在內(nèi)容相同且長(zhǎng)度大于預(yù)設(shè)值的字符段;
步驟i、若存在,確定后一個(gè)字符段與前一個(gè)字符端的距離以及所述字符段的長(zhǎng)度;
步驟j、采用距離與長(zhǎng)度的標(biāo)識(shí)代替后一個(gè)字符段,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。
即,所述第一調(diào)制解調(diào)器11獲取到數(shù)據(jù)包對(duì)應(yīng)的源文本之后,還可確定源文本中是否存在內(nèi)容相同且長(zhǎng)度大于預(yù)設(shè)值的字符段,若存在,確定后一個(gè)字符段與前一個(gè)字符端的距離以及字符段的長(zhǎng)度,采用距離與長(zhǎng)度的標(biāo)識(shí)代替后一個(gè)字符段,以實(shí)現(xiàn)數(shù)據(jù)包的壓縮。
該過(guò)程涉及的算法為lz77(由jacobziv和abrahamlempel于1977年提出,所以命名為lz77)算法。
lz77算法的壓縮原理:如果文件中有兩塊字符串內(nèi)容相同的話(huà),那么只要知道前一塊字符串內(nèi)容的位置和大小,我們就可以確定后一塊字符串的內(nèi)容。所以我們可以用(兩塊字符串之間的距離,相同內(nèi)容的長(zhǎng)度)這樣一對(duì)信息,來(lái)替換后一塊字符串內(nèi)容。由于(兩塊字符串之間的距離,相同內(nèi)容的長(zhǎng)度)這一對(duì)信息的大小,小于被替換內(nèi)容的大小,所以文件得到了壓縮。
為更好理解,下面我們來(lái)舉一個(gè)例子:
有一個(gè)文件的內(nèi)容如下:http://jiurl.yeah.nethttp://jiurl.nease.net,其中有些部分的內(nèi)容,前面已經(jīng)出現(xiàn)過(guò)了,后面用()括起來(lái)的部分就是相同的部分:http://jiurl.yeah.net(http://jiurl.)nease(.net)。
我們使用(兩塊字符串之間的距離,相同內(nèi)容的長(zhǎng)度)這樣一對(duì)信息,來(lái)替換后一塊字符串內(nèi)容,得到http://jiurl.yeah.net(22,13)nease(23,4)。
(22,13)中,22表示后一塊http://jiurl.與前一塊http://jiurl.中任意兩個(gè)相同字符之間的距離,如后一個(gè)h與前一個(gè)h的距離;13為相同內(nèi)容的長(zhǎng)度;(23,4)同理,此處不再贅述。
從上述例子中可看出,由于(兩塊字符串之間的距離,相同內(nèi)容的長(zhǎng)度)這一對(duì)信息的大小,小于被替換內(nèi)容的大小,所以文件得到了壓縮。
具體地,lz77算法使用滑動(dòng)窗口尋找匹配串:
即lz77算法使用"滑動(dòng)窗口"的方法,來(lái)尋找文件中的相同部分,文件中相同部分即匹配串。首先,對(duì)匹配串做一個(gè)說(shuō)明,匹配串是指一個(gè)任意字節(jié)的序列,不僅僅是可以在文本文件中顯示出來(lái)的那些字節(jié)的序列,還可以是包括標(biāo)點(diǎn)符號(hào)的序列。這里的串強(qiáng)調(diào)的是它在文件中的位置,它的長(zhǎng)度隨著匹配的情況而變化。具體地:
lz77從文件的開(kāi)始處開(kāi)始,一個(gè)字節(jié)一個(gè)字節(jié)的向后進(jìn)行處理。本發(fā)明實(shí)施例中,滑動(dòng)窗口的長(zhǎng)度是固定的,該滑動(dòng)窗口的終止位置在當(dāng)前處理字節(jié)之前,并且緊挨著當(dāng)前處理字節(jié),隨著處理的字節(jié)不斷的向后滑動(dòng),就象在陽(yáng)光下,飛機(jī)的影子滑過(guò)大地一樣。對(duì)于文件中的每個(gè)字節(jié),用當(dāng)前處理字節(jié)開(kāi)始的串,和窗口中的每個(gè)串進(jìn)行匹配,以尋找最長(zhǎng)的匹配串。
窗口中的每個(gè)串指窗口中每個(gè)字節(jié)開(kāi)始的串。如果當(dāng)前處理字節(jié)開(kāi)始的串在窗口中有匹配串,就用(之間的距離,匹配長(zhǎng)度)這樣一對(duì)信息,來(lái)替換當(dāng)前串,然后從剛才處理完的串之后的下一個(gè)字節(jié),繼續(xù)處理。如果當(dāng)前處理字節(jié)開(kāi)始的串在窗口中沒(méi)有匹配串,就不做改動(dòng)的輸出當(dāng)前處理字節(jié)。
處理文件中第一個(gè)字節(jié)的時(shí)候,窗口在當(dāng)前處理字節(jié)之前,也就是還沒(méi)有滑到文件上,這時(shí)窗口中沒(méi)有任何內(nèi)容,被處理的字節(jié)就會(huì)不做改動(dòng)的輸出。隨著處理的不斷向后,窗口越來(lái)越多的滑入文件,最后整個(gè)窗口滑入文件,然后整個(gè)窗口在文件上向后滑動(dòng),直到整個(gè)文件結(jié)束。
需要說(shuō)明的是,匹配串的長(zhǎng)度有所限制,即本實(shí)施例中,設(shè)置了最小匹配串和最大匹配串,必須限制通過(guò)滑動(dòng)窗口匹配出來(lái)的字符串大于該最小匹配串并且小于該最大匹配串,才會(huì)進(jìn)行壓縮,若是匹配出來(lái)的字符串小于該最小匹配串,或大于該最大匹配串,則不會(huì)進(jìn)行后續(xù)的壓縮操作。
為更好理解本實(shí)施例,舉例如下:
假設(shè)文本字符串為:aaababaaac,當(dāng)前有一個(gè)6個(gè)字符的滑動(dòng)窗口,表示滑動(dòng)窗口中一次性最多包含6個(gè)字符。
編碼的第一步:滑動(dòng)窗口是一個(gè)空窗口,此時(shí)滑動(dòng)窗口還不需要滑動(dòng),將滑動(dòng)窗口與滑動(dòng)窗口外的文本字符串第一位字符進(jìn)行比對(duì),發(fā)現(xiàn)不存在匹配的字符,此時(shí)將滑動(dòng)窗口往右移動(dòng)一位,也就是將滑動(dòng)窗口從右滑入文本字符串,那么字符串首字母進(jìn)入該滑動(dòng)窗口,此時(shí)滑動(dòng)窗口顯示字符a;
編碼的第二步:由于滑動(dòng)窗口內(nèi)部只有字符a,滑動(dòng)窗口外緊接著出現(xiàn)字符a,雖然滑動(dòng)窗口里面和外面存在匹配的字符a,但是為了保證字符編碼的效率,事先設(shè)置最小匹配串,如將最小匹配串設(shè)置為2個(gè)字符,由于此時(shí)只有一個(gè)字符a匹配,不符合要求,那么滑動(dòng)窗口保持不動(dòng),將處理的字符往右移動(dòng)一位,即與滑動(dòng)窗口進(jìn)行比對(duì)的字符就是aa,此時(shí)滑動(dòng)窗口內(nèi)只有一個(gè)字符a,因此,不存在匹配的字符,那么將該滑動(dòng)窗口繼續(xù)向右滑動(dòng),那么文本字符串的第二個(gè)字符也進(jìn)入滑動(dòng)窗口,此時(shí)滑動(dòng)窗口中出現(xiàn)了兩個(gè)一樣的字符a。
編碼的第三步:當(dāng)滑動(dòng)窗口內(nèi)部存在兩個(gè)相同的字符a時(shí),將滑動(dòng)窗口內(nèi)部的兩個(gè)字符a與窗口外的字符進(jìn)行比對(duì),由于滑動(dòng)窗口外緊接著的兩個(gè)字符是ab,不匹配,因此滑動(dòng)窗口繼續(xù)右滑,當(dāng)滑動(dòng)窗口滑動(dòng)出現(xiàn)aaa時(shí),滑動(dòng)窗口外緊接著出現(xiàn)的字符是bab,與滑動(dòng)窗口內(nèi)的字符不匹配,那么滑動(dòng)窗口繼續(xù)向右滑動(dòng),以使得滑動(dòng)窗口內(nèi)部出現(xiàn)aaab,此時(shí),由于滑動(dòng)窗口內(nèi)部的字符ab與滑動(dòng)窗口外部緊接著的字符ab匹配,認(rèn)為找到了相似長(zhǎng)度為2的ab,因此滑動(dòng)窗口外的ab滿(mǎn)足最小匹配串的要求,因此一對(duì)〈長(zhǎng)度,距離〉就被輸出了,長(zhǎng)度(length)是2并且向后距離也是2,所以輸出為<2,2>。
編碼的第四步:當(dāng)后一個(gè)字符串a(chǎn)b用<2,2>輸出之后,該段字符串就相當(dāng)于刪除了,此時(shí)將滑動(dòng)窗口與剩下的文本字符串進(jìn)行比對(duì),剩下的文本字符串為aaac,通過(guò)該滑動(dòng)窗口比對(duì)時(shí),在將aaac中的前兩個(gè)aa與滑動(dòng)窗口進(jìn)行比對(duì)時(shí),雖然aa與滑動(dòng)窗口出現(xiàn)相同內(nèi)容和長(zhǎng)度的字符,并且符合最小字符串,但是為了提高壓縮效率,會(huì)繼續(xù)判斷文本字符串后面是否還有匹配的字符串,若此時(shí)檢測(cè)到出還有一個(gè)字符a,即剛好有文本字符串a(chǎn)aa與滑動(dòng)窗口內(nèi)的三個(gè)字符a相同,那么確定剩下的文本字符串a(chǎn)aa與滑動(dòng)窗口內(nèi)aaa的距離以及相同字符串的長(zhǎng)度,此時(shí)由于刪除了原本字符串中的后一個(gè)ab,因此aaa與滑動(dòng)窗口內(nèi)aaa的距離是4,相同的內(nèi)容長(zhǎng)度是3,可輸出<4,3>。
編碼的第五步:輸出<4,3>之后,該文本字符串中還需要處理的字符只有c,由于該滑動(dòng)窗口中的字符是aaab,不匹配,因此滑動(dòng)窗口向右滑動(dòng)一位,將字符c也滑進(jìn)該滑動(dòng)窗口,那么滑動(dòng)窗口內(nèi)的字符就為aaabc。由于后續(xù)沒(méi)有內(nèi)容需要處理,那么將該滑動(dòng)窗口內(nèi)的所有字符都輸出,最終得到的編碼串為aaab<2,2><4,3>c。
使用lz77算法進(jìn)行壓縮和解壓縮
為了在解壓縮時(shí),可以區(qū)分“沒(méi)有匹配的字節(jié)”和“(之間的距離,匹配長(zhǎng)度)對(duì)”,還需要在每個(gè)“沒(méi)有匹配的字節(jié)”或者“(之間的距離,匹配長(zhǎng)度)對(duì)”之前,放上一位,來(lái)指明是“沒(méi)有匹配的字節(jié)”,還是“(之間的距離,匹配長(zhǎng)度)對(duì)”。本發(fā)明實(shí)施例中,可選用0表示“沒(méi)有匹配的字節(jié)”,用1表示“(之間的距離,匹配長(zhǎng)度)對(duì)”。
實(shí)際應(yīng)用中,固定(之間的距離,匹配長(zhǎng)度)對(duì)中的,“之間的距離”和“匹配長(zhǎng)度”所使用的位數(shù)。由于要固定“之間的距離”所使用的位數(shù),所以才使用了固定大小的窗口,比如窗口的大小為32kb,那么用15位(2^15=32k)就可以保存0-32k范圍內(nèi)的任何一個(gè)值。此外,還將限定最大的匹配長(zhǎng)度,這樣一來(lái),“匹配長(zhǎng)度”所使用的位數(shù)也就固定了。
實(shí)際應(yīng)用中,還將設(shè)定一個(gè)最小匹配長(zhǎng)度,只有當(dāng)兩個(gè)串的匹配長(zhǎng)度大于最小匹配長(zhǎng)度時(shí),才認(rèn)為是一個(gè)匹配。為更好理解,舉一個(gè)例子來(lái)說(shuō)明這樣做的原因:比如,“距離”使用15位,“長(zhǎng)度”使用8位,那么“(之間的距離,匹配長(zhǎng)度)對(duì)”將使用23位,也就是差1位3個(gè)字節(jié)。如果匹配長(zhǎng)度小于3個(gè)字節(jié)的話(huà),那么用“(之間的距離,匹配長(zhǎng)度)對(duì)”進(jìn)行替換的話(huà),不但沒(méi)有壓縮,反而會(huì)增大,所以需要一個(gè)最小匹配長(zhǎng)度。
壓縮:
從文件的開(kāi)始到文件結(jié)束,一個(gè)字節(jié)一個(gè)字節(jié)的向后進(jìn)行處理。用當(dāng)前處理字節(jié)開(kāi)始的串,和滑動(dòng)窗口中的每個(gè)串進(jìn)行匹配,尋找最長(zhǎng)的匹配串。如果當(dāng)前處理字節(jié)開(kāi)始的串在窗口中有匹配串,就先輸出一個(gè)標(biāo)志位,表明下面是一個(gè)(之間的距離,匹配長(zhǎng)度)對(duì),然后輸出(之間的距離,匹配長(zhǎng)度)對(duì),然后從剛才處理完的串之后的下一個(gè)字節(jié),繼續(xù)處理。如果當(dāng)前處理字節(jié)開(kāi)始的串在窗口中沒(méi)有匹配串,就先輸出一個(gè)標(biāo)志位,表明下面是一個(gè)沒(méi)有改動(dòng)的字節(jié),然后不做改動(dòng)的輸出當(dāng)前處理字節(jié),然后繼續(xù)處理當(dāng)前處理字節(jié)的下一個(gè)字節(jié)。
解壓縮:
從文件開(kāi)始到文件結(jié)束,每次先讀一位標(biāo)志位,通過(guò)這個(gè)標(biāo)志位來(lái)判斷下面是一個(gè)(之間的距離,匹配長(zhǎng)度)對(duì),還是一個(gè)沒(méi)有改動(dòng)的字節(jié)。如果是一個(gè)(之間的距離,匹配長(zhǎng)度)對(duì),就讀出固定位數(shù)的(之間的距離,匹配長(zhǎng)度)對(duì),然后根據(jù)對(duì)中的信息,將匹配串輸出到當(dāng)前位置。如果是一個(gè)沒(méi)有改動(dòng)的字節(jié),就讀出一個(gè)字節(jié),然后輸出這個(gè)字節(jié)。
綜上所述,可以看出,lz77壓縮時(shí)需要做大量的匹配工作,而解壓縮時(shí)需要做的工作很少,也就是說(shuō)解壓縮相對(duì)于壓縮將快的多,這對(duì)于需要進(jìn)行一次壓縮,多次解壓縮的情況,是一個(gè)效果顯著的優(yōu)點(diǎn)。
當(dāng)?shù)谝徽{(diào)制解調(diào)器11通過(guò)上述任一個(gè)壓縮算法對(duì)數(shù)據(jù)包進(jìn)行壓縮之后,再將壓縮后的數(shù)據(jù)包存儲(chǔ)到buffer中進(jìn)行轉(zhuǎn)發(fā)。后續(xù),第二調(diào)制解調(diào)器21即可從buffer中提取出壓縮的數(shù)據(jù)包,并對(duì)提取的壓縮數(shù)據(jù)包進(jìn)行解壓,其中,解壓的方式也包括兩種:當(dāng)?shù)谝徽{(diào)制解調(diào)器11是加密壓縮時(shí),所述第二調(diào)制解調(diào)器21采用對(duì)應(yīng)的密文進(jìn)行解壓,當(dāng)?shù)谝徽{(diào)制解調(diào)器11是明文壓縮時(shí),所述第二調(diào)制解調(diào)器21即可直接進(jìn)行解壓,以得到解壓后的數(shù)據(jù)包。由于本實(shí)施例中的各個(gè)壓縮算法主要是明文算法,因此,解壓的方式也是明文解壓。
可以理解,本方案中,在移動(dòng)終端100中的電信卡傳輸?shù)臄?shù)據(jù)包較大時(shí),第二調(diào)制解調(diào)器21在request中添加標(biāo)識(shí),使第一調(diào)制解調(diào)器11對(duì)數(shù)據(jù)包進(jìn)行壓縮,以改變數(shù)據(jù)包的期望值,后續(xù)緩存到buffer的數(shù)據(jù)包就不會(huì)超出buffer的容量值,那么,避免了大數(shù)據(jù)包傳輸導(dǎo)致死機(jī)的問(wèn)題,同時(shí)數(shù)據(jù)包不會(huì)被拆分成多個(gè)數(shù)據(jù)包,避免了數(shù)據(jù)包轉(zhuǎn)發(fā)不完整的情況。
需要說(shuō)明的是,在本文中,術(shù)語(yǔ)“包括”、“包含”或者其任何其它變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者系統(tǒng)不僅包括那些要素,而且還包括沒(méi)有明確列出的其它要素,或者是還包括為這種過(guò)程、方法、物品或者系統(tǒng)所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括該要素的過(guò)程、方法、物品或者系統(tǒng)中還存在另外的相同要素。
上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實(shí)施例方法可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)(如rom/ram、磁碟、光盤(pán))中,包括若干指令用以使得一臺(tái)終端設(shè)備(可以是手機(jī),計(jì)算機(jī),服務(wù)器,空調(diào)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
以上僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專(zhuān)利范圍,凡是利用本發(fā)明說(shuō)明書(shū)及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其它相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專(zhuān)利保護(hù)范圍內(nèi)。