ASNPER編碼規(guī)范模板_第1頁
ASNPER編碼規(guī)范模板_第2頁
ASNPER編碼規(guī)范模板_第3頁
ASNPER編碼規(guī)范模板_第4頁
ASNPER編碼規(guī)范模板_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)或者侵權(quán),請(qǐng)聯(lián)系改正或者刪除。ASN.1編碼規(guī)范及實(shí)現(xiàn)方式ASN.1語言概述ASN.1(AbstractSyntaxNotationNumberOne),抽象語法描述1,是一種ISO/ITU-T標(biāo)準(zhǔn)。該語言描述了一種對(duì)數(shù)據(jù)進(jìn)行表示、編碼、傳輸和解碼的數(shù)據(jù)格式,它提供的一整套正規(guī)的格式用于描述對(duì)象的結(jié)構(gòu),具有類似于面向?qū)ο蟪绦蛟O(shè)計(jì)語言中所提供的類型機(jī)制,可定義任意復(fù)雜結(jié)構(gòu)的數(shù)據(jù)類型,而不同的數(shù)據(jù)類型之間還能夠有繼承的關(guān)系。因此,ASN.1是以一種獨(dú)立于計(jì)算機(jī)架構(gòu)和語言的方式來描述數(shù)據(jù)結(jié)構(gòu)的。同時(shí),ASN.1的描述能夠容易地映被射成C、C++或Java的數(shù)據(jù)結(jié)構(gòu),直接作為應(yīng)用程序代碼使用,并得到運(yùn)行程序庫的支持。ASN.1作為一種數(shù)據(jù)表示標(biāo)準(zhǔn)產(chǎn)生于20世紀(jì)80年代早期的開放系統(tǒng)互聯(lián)(OSI)網(wǎng)絡(luò)模型,雖然OSI模型并沒有得到廣泛的應(yīng)用,可是ASN.1標(biāo)準(zhǔn)在繼續(xù)進(jìn)化。今天已有大量的實(shí)際應(yīng)用,這些應(yīng)用包括:3G移動(dòng)系統(tǒng)、IP語音、安全應(yīng)用、傳統(tǒng)電信網(wǎng)絡(luò)、軍事和空間應(yīng)用等許多方面。另外,ASN.1有多種標(biāo)準(zhǔn)化編碼規(guī)則:如基本編碼規(guī)則(BER)、規(guī)范編碼規(guī)則(CER)、識(shí)別名編碼規(guī)則(DER)、壓縮編碼規(guī)則(PER)和XER編碼規(guī)則(XER)。這些編碼規(guī)則描述了如何對(duì)ASN.1中定義的數(shù)值進(jìn)行編碼,以便用于傳輸,而與計(jì)算機(jī)、編程語言或它在應(yīng)用程序中如何表示等因素?zé)o關(guān)。同時(shí),該編碼具有先進(jìn)的標(biāo)識(shí)系統(tǒng)、信息擴(kuò)展性、支持快速可靠傳輸?shù)忍攸c(diǎn),這在無線傳輸中是一種優(yōu)勢(shì)。因此,ASN.1不但適合表示現(xiàn)代通信應(yīng)用中那些復(fù)雜的、變化的及可擴(kuò)展的數(shù)據(jù)結(jié)構(gòu),而且還有適合的協(xié)議編碼方式。同時(shí),3GPP標(biāo)準(zhǔn)ASN.1文檔中也包含了完整、詳細(xì)的數(shù)據(jù)單元(PDU)協(xié)議。這些都為3G移動(dòng)系統(tǒng)中ASN.1的應(yīng)用打下了基礎(chǔ)。3G協(xié)議的ASN編碼跟一般的編碼相比具有高效性、嚴(yán)謹(jǐn)性以及規(guī)范性等特點(diǎn)。二、PER編碼簡(jiǎn)介3GPP的規(guī)范中,由ASN.1到傳輸碼的轉(zhuǎn)換統(tǒng)一使用定義在ITU-TX.691中的PER(PackedEncodingRules)規(guī)則,因此這里講的ASN編譯碼規(guī)則也就是ASN編碼中的PER編譯碼規(guī)則。PER有兩個(gè)變體:對(duì)齊方式和非對(duì)齊方。對(duì)齊方式用于:Iub、Iur、Iu接口的ASN.1的傳輸編碼。非對(duì)齊方式:僅用于空中(UU)接口的ASN.1轉(zhuǎn)換,兩者的編碼過程基本相同。在對(duì)齊的方式下,若前面所有單元的信息經(jīng)編碼后得到的比特流長(zhǎng)度不是一個(gè)八位組的倍數(shù),而后一個(gè)信息又是以八位組為單位的(字符串),那么就需要在前面生成的比特流后面補(bǔ)”0”,使其長(zhǎng)度為8的倍數(shù)。因此一般補(bǔ)的位數(shù)為0~7bit。而非對(duì)齊的方式無此限制。所有信息單元按編碼規(guī)則生成的比特?cái)?shù)據(jù)將按其被編碼的順序首尾相連,中間不需要任何填充。按ITU-TX.691的規(guī)定,若最終的編碼結(jié)束后。所得的編碼不是8的倍數(shù),信息編碼結(jié)束后的填充由RRC負(fù)責(zé)。另外,PER編譯碼必須依賴于3GPP的標(biāo)準(zhǔn)文檔,也就是說,收發(fā)雙方也必須知道層3消息的具體結(jié)構(gòu),這樣編碼和譯碼的才能被編譯和識(shí)別。三、PER的編碼規(guī)則PER的編碼規(guī)則定義了多種數(shù)據(jù)類型,簡(jiǎn)單的地可分為兩大類。第一類是結(jié)構(gòu)類,如CHOICE、SEQUENCE、ENUMERATED等。另一類是簡(jiǎn)單類,如INTEGER、REALL、BOOLEAN等。下面將對(duì)以下常見的類型的編碼規(guī)則做一個(gè)總結(jié):3.1INTEGER整型是協(xié)議規(guī)范中用得最多的一種數(shù)據(jù)類型。對(duì)這種數(shù)據(jù)類型編碼之前,首先要確定其取值范圍,即上下界之間的數(shù)的個(gè)數(shù)。而編碼的長(zhǎng)度是根據(jù)數(shù)的范圍來確定的。當(dāng)2m<范圍≤2m例1:TimeslotNumber::= INTEGER(0..14)上面的例子中TimeslotNumber為整型,范圍是0~14共15個(gè)數(shù),因?yàn)?3<15<24,故編碼為4bit,若取值為7,則編碼為0111。例2:MaxAllowedUL-TX-Power::= INTEGER(-50..33)同理,MaxAllowedUL-TX-Power為整型,范圍是-50~33共84個(gè)數(shù),26<84<27編碼長(zhǎng)度為7bit,若取值為0,則編0的索引值50(-50的索引值為0),因此編碼為:0110010。3.2BOOLEAN布爾邏輯型編碼只須1bit。用”1”表示TRUE,”0”表示FALSE。例:DL-TM-RLC-Mode::= SEQUENCE{ segmentationIndication BOOLEAN}上面的segmentationIndication是一個(gè)BOOLEAN型,意思是段的指示。當(dāng)我們需要這種指示時(shí)編碼為1,不需要時(shí)編碼為0。3.3BITSTRING比特串的編碼分成兩種情況:長(zhǎng)度固定:直接將比特串與前面的比特流疊加即可;長(zhǎng)度可變:按前述整型編碼的規(guī)則,以描述長(zhǎng)度范圍最少比特的原則在比特串前面加上用于描述長(zhǎng)度所需的比特,然后將待編碼的比特串加在后邊。例1:RoutingParameter::= BITSTRING(SIZE(10))上面的RoutingParameter是一個(gè)定長(zhǎng),且長(zhǎng)度為10的比特串,編碼時(shí)直接給出10位二制數(shù),例如編碼為:‘’。例2:SIB-Data-variable::= BITSTRING(SIZE(1..214))SIB-Data-variable是一個(gè)變長(zhǎng)的比特串,編碼之前首先編長(zhǎng)度,因?yàn)殚L(zhǎng)度的范圍為1~214共需要編8比特,因此若SIB-Data-variable是一個(gè)5位的比特串時(shí)則編碼為:0000010011111(前面8位是比特串長(zhǎng)度的編碼,后面5位是該比特串的值)。3.4OCTETSTRING八位組串編碼的原則與比特串相同。分成長(zhǎng)度可變的八位串和長(zhǎng)度不可變的八位串兩種。與比特串編碼不同的是編碼的值是八位串而不是比特串。例:VALUE::=OCTETSTRING(SIZE(1..8))若VALUE值是長(zhǎng)度為3的八位串,則編碼為:010,后面跟著3個(gè)因?yàn)殚L(zhǎng)度區(qū)間為八,因此長(zhǎng)度編碼L為3位,而3-bmin=2。因此編碼為010。后面則跟著3個(gè)八位組如:000000001111111100000000。3.5CHARACTERSTRINGS字符串的編碼方式有多種情況的編碼方式與BITSTRING和OCTETSTRING的編碼方式類似,只是對(duì)不同類型的字符串有不同的編碼方法,下面將著重說明CHARACTERSTRINGS中常見的NumricString、PrintableString、NameString的編碼方法:①NumricString類型中成員為0~9,共十個(gè)數(shù)。因此在編碼時(shí)長(zhǎng)度可定為4bit(23<10<24).,因此此種類型的串編碼是每個(gè)數(shù)字編為4比特。同理,PrintableString中包含的字符為:”a..z”、”A..Z”、”0..9”、”space”、”,”、”(”、”)”,”+”、”、”、”-”、”/”、”.”、”=”、”?”、”:”共74個(gè)字符,每個(gè)字母應(yīng)編碼為7比特。NameString共52個(gè)大小寫字母,每個(gè)字母編碼則為6bit。②NumricString123的編碼為:000100100011。NameString”cat”編碼為:011100011010100010,上面每個(gè)字母編6比特,每個(gè)字母的值是其在NameString中的索引值。3.6NULLNULL類型不用編碼。3.7ENUMERATED枚舉型的編碼類似于整型,也是以描述枚舉內(nèi)全體成員所需比特?cái)?shù)最少的原則進(jìn)行編碼。其值的范圍從0開始。枚舉類型編碼時(shí),只對(duì)其項(xiàng)的索引值編碼。例:Modulation::= ENUMERATED{mod-QPSK,mod-8PSK}上面是一個(gè)Modulation是枚舉類型,編碼時(shí),首先看枚舉項(xiàng)的個(gè)數(shù)為2,21=2,因此編碼為1bit,當(dāng)選mod-QPSK調(diào)制模式時(shí)編碼為0,選mod-8PSK調(diào)制模式時(shí)編碼為1。3.8CHOICE選擇型的編碼類似于整型,以最少的比特來描述選擇體內(nèi)各成員的索引值。值的范圍從0開始。與枚舉不同的是,編完CHOICE的索引值,緊接著就應(yīng)編碼索引值對(duì)應(yīng)的單元。而枚舉型將索引值編完后就結(jié)束。下面將以一個(gè)例子對(duì)這種類型的編碼進(jìn)行說明:例:NumberOfTransportBlocks::= CHOICE{ zero NULL, one NULL, small INTEGER(2..17), large INTEGER(18..512)}NumberOfTransportBlocks是一個(gè)選擇類型,若信息傳輸塊的個(gè)數(shù)為16,則應(yīng)該選擇CHOICE的small項(xiàng),然后在對(duì)該項(xiàng)值進(jìn)行編碼。首先CHOICE里有4項(xiàng),編碼為2bit,small為第3項(xiàng)編碼值為2,選擇項(xiàng)編碼為:10。然后再對(duì)small項(xiàng)編碼,因?yàn)槿≈禐?6,索引值為14,整數(shù)范圍是2~17共16個(gè)數(shù),要編4比特,因此要對(duì)索引值14編4比特,即編碼為:1110。3.9SEQUENCE一般說來,序列編碼后都會(huì)產(chǎn)生一個(gè)前導(dǎo)位圖,用以指示序列中的可選項(xiàng)或缺省項(xiàng)是否存在。每以可選項(xiàng)(或缺省項(xiàng))用1bit來指示,”1”表示存在,”0”表示不存在。若一個(gè)序列型中包含n個(gè)標(biāo)注為可選(或缺省)的成員,那么,前導(dǎo)位圖的長(zhǎng)度就是nbit。位圖中的比特順序與序列中各可選(或缺省)的成員排列一致。然后再對(duì)SEQUENCE中的各成員進(jìn)行編碼,這種類型對(duì)應(yīng)于C語言中的結(jié)構(gòu)。下面將以實(shí)例來說明:IndividualTimeslotInfo-LCR::= SEQUENCE{ timeslotNumber INTEGER(1..15)OPTIONAL, tfci-Existence BOOLEAN, midambleShiftAndBurstType MidambleShiftAndBurstType-LCROPTIONAL, modulation ENUMERATED{mod-QPSK,mod-8PSK}, ss-TPC-Symbols NULL, additionalSS-TPC-Symbols INTEGER(1..15) OPTIONAL}上面是一個(gè)SEQUENCE結(jié)構(gòu)編碼時(shí)我們分兩步進(jìn)行:確定其前導(dǎo)位圖.該結(jié)構(gòu)中有3個(gè)可選項(xiàng),故可確定位圖長(zhǎng)度為3bit。我們根據(jù)需要選擇其中的項(xiàng),若某項(xiàng)選擇了編碼位圖為1,否則為0。假設(shè)我們選擇了timeslotNumber而其它項(xiàng)都不選的話,則在對(duì)結(jié)構(gòu)內(nèi)部編碼之前應(yīng)編碼為:100根據(jù)SEQUENCE結(jié)構(gòu)內(nèi)部的項(xiàng),從上到下依次編碼。TimeslotNumber取值為6,則編碼為0101;tfci-Existence存在TFCI指示,則編碼為1;modulation選擇mod-QPSK,編碼為0;ss-TPC-Symbols為空類型,不用編碼綜上可得:該結(jié)構(gòu)編碼為1000101103.10SEQUENCE(SIZE(ib..ub))OFcomponentSEQUENCEOF在ASN.1描述中用作循環(huán)。循環(huán)次數(shù)由SIZE確定。SEQUENCEOF的前導(dǎo)比特為SIZE中數(shù)的范圍,編碼規(guī)則與整數(shù)型相同。緊跟在前導(dǎo)比特之后的是循環(huán)體成員component的編碼,component能夠是結(jié)構(gòu)也能夠是一個(gè)整型的參數(shù)。各成員編碼后順序放置,每?jī)蓚€(gè)成員之間編碼值不需分隔符,該類型對(duì)應(yīng)于C語言中的數(shù)組。下面將以一個(gè)例子來說明:MNC::= SEQUENCE(SIZE(2..3))OFDigitDigit::= INTEGER(0..9)上面的MNC移動(dòng)網(wǎng)絡(luò)碼,在上面的循環(huán)中我們將分幾步說明:①首先確定其循環(huán)次數(shù),由SIZE(2..3)可知其循環(huán)的次數(shù)為2~3次,一般我們選擇2次,則編碼為0。②第一次對(duì)Digit進(jìn)行編碼為:0010(取值為2)。③第二次對(duì)Digit進(jìn)行編碼為:0011(取值為3)。綜上,對(duì)該循環(huán)編碼為:000100011。四、PER編碼實(shí)例分析下面我將以手機(jī)釋放流程中的RRCCONNECTIONRELEASE消息為例講述PER編譯碼過程:手機(jī)釋放協(xié)議流程分CC層釋放、RRC釋放等2個(gè)階段。其具體協(xié)議流程如圖1所示。UEUE通話過程DISCONNECTRELEASERELEASECOMPLETERRCCONNECTIONRELEASERRCCONNECTIONRELEASECOMPLETENETWORK圖1手機(jī)釋放協(xié)議流程上面的協(xié)議流程是通話完成后終止UE和網(wǎng)絡(luò)連接過程,包括兩個(gè)部分,前一個(gè)部分是完成呼叫終止過程,后面的一部分是信令鏈路的釋放過程,包括釋放UE和UTRAN之間的全部無線承載和釋放所有建立的信令連接。這里我將在下行公共控制信道上的消息RRCCONNECTIONRELEASE為例來說明這條消息的編碼:DL-CCCH-Message::=SEQUENCE{ integrityCheckInfo IntegrityCheckInfo OPTIONAL, message DL-CCCH-MessageType}編碼:0。上面SEQUENCE結(jié)構(gòu)有一個(gè)可選項(xiàng),要編一個(gè)1bit的位圖,該項(xiàng)選擇編碼為1,否則為0。DL-CCCH-MessageType::=CHOICE{ cellUpdateConfirm CellUpdateConfirm-CCCH, rrcConnectionReject RRCConnectionReject, rrcConnectionRelease RRCConnectionRelease-CCCH, rrcConnectionSetup RRCConnectionSetup, uraUpdateConfirm URAUpdateConfirm-CCCH, spare3 NULL, spare2 NULL, spare1 NULL}編碼:010。CHOICE結(jié)構(gòu)的編碼方法是:首先對(duì)選擇項(xiàng)的索引值進(jìn)行編碼,然后對(duì)選擇項(xiàng)進(jìn)行編碼,每次只能選擇一項(xiàng)。這里010是對(duì)索引值的編碼,因?yàn)楣┻x擇的項(xiàng)共有8項(xiàng),23=8編3bit,而索引值是從0開始的,因此這里的第三項(xiàng)編碼值為2。RRCConnectionRelease-CCCH::=CHOICE{r3 SEQUENCE{ rrcConnectionRelease-CCCH-r3 RRCConnectionRelease-CCCH-r3-IEs,rrcConnectionRelease-CCCH-r3-add-ext BITSTRINGOPTIONAL },later-than-r3 SEQUENCE{ u-RNTI U-RNTI, rrc-TransactionIdentifier RRC-TransactionIdentifier,}}③編碼為:00。首先上面是一個(gè)CHOICE結(jié)構(gòu),共有兩項(xiàng)編1bit,我們選擇第一項(xiàng)編碼為0;r3 為一個(gè)SEQUENCE結(jié)構(gòu),有一個(gè)可選項(xiàng),此處不選,編碼為0。RRCConnectionRelease-CCCH-r3-Ies::=SEQUENCE{ u-RNTI U-RNTI, rrcConnectionRelease RRCConnectionRelease-r3-IEs}U-RNTI::= SEQUENCE{ srnc-Identity SRNC-Identity, s-RNTI S-RNTI}SRNC-Identity::= BITSTRING(SIZE(12))S-RNTI::= BITSTRING(SIZE(20))④編碼為000000000001;00000000000000000001。RRCConnectionRelease-CCCH-r3-IEs為SEQUENCE結(jié)構(gòu),沒有可選項(xiàng),因此兩項(xiàng)都要編碼。第一項(xiàng)SRNC-Identity是定長(zhǎng)的比特串類型,編碼時(shí)直接給出12bit長(zhǎng)的串。同理第二項(xiàng)為20bit長(zhǎng)的串。RRCConnectionRelease-r3-IEs::=SEQUENCE{ rrc-TransactionIdentifier RRC-TransactionIdentifier, n-308 N-308 OPTIONAL, releaseCause ReleaseCause, rplmn-information Rplmn-Information OPTIONAL}⑤編碼:10。RRCConnectionRelease-r3-IEs為一個(gè)SEQUENCE結(jié)構(gòu)上面有2個(gè)可選項(xiàng),位圖長(zhǎng)度為2bit,第一項(xiàng)編碼,第二項(xiàng)不編碼,因此位圖為10。RRC-TransactionIdentifier::= INTEGER(0..3)N-308::= INTEGER(1..8)⑥編碼:00;001。整型RRC-TransactionIdentifier范圍為0~3。共4個(gè)取值,編碼為2bit,這里取值0編碼為00。同理整型N-308編碼長(zhǎng)度應(yīng)為3bit,取值為2,編碼為001(注意是對(duì)索引值的編碼)。ReleaseCause::= ENUMERATED{ normalEvent, unspecified, pre-emptiveRelease, congestion, re-establishmentReject, directedsignallingconnectionre-establishment, userInactivity, spare}⑦編碼:000。ReleaseCause為枚舉類型,枚舉類型編碼只是對(duì)選項(xiàng)的索引值編碼,釋放過程屬于正常事件,故選第一項(xiàng),編碼為000。由于上面的編碼是在空中(UU)接口上傳輸?shù)?為了盡可能少的傳輸比特,編碼是采用的是PER編碼的非對(duì)齊方式,在這種方式下,上面每一步生成的編碼依次疊加直到編碼結(jié)束,然后以八個(gè)比特為單位組成八位組,若不夠則在編碼的末尾添零。上面的編碼后組成串為:001000000000011000001000分成八位組為:001000000000000001000000000000000000011000001000正好組成六個(gè)八位組,因此不用添零。轉(zhuǎn)換成十六進(jìn)制編碼為:200040000608。五、PER手工編譯碼總結(jié)PER編碼中,對(duì)齊方式編碼,添加0的前提是前面的編碼不能組成一個(gè)或者多個(gè)八位組,而后面的編碼長(zhǎng)度是一個(gè)或多個(gè)八位組的長(zhǎng)度,在這種情況下需要添加0。否則,就在前面碼的后面繼續(xù)疊加,最后再以八個(gè)位一組分成多個(gè)的八位組。因此,編碼過程中,每到下一個(gè)編碼長(zhǎng)度是一個(gè)或多個(gè)八位組時(shí),就得把前面的碼分成一個(gè)或多個(gè)字節(jié),并可能會(huì)添加0,添0的個(gè)數(shù)為0到7個(gè)。而非對(duì)齊的方式則一直疊加到編碼編完后,再分成多個(gè)八位組。在編碼的最后若剩下的是0到7比特,這種情況下再添加0,因此非對(duì)齊方式最多添7個(gè)0,而對(duì)齊方式是每次最多添7個(gè)0,但次數(shù)大于或等于1次。例如:XX::=SEQUENCE{ r-TransactionIdentifier R-TransactionIdentifier, releaseIdentifier ReleaseIdentifier, rplmn-information Rplmn-Information }RRC-TransactionIdentifier::= INTEGER(0..3)ReleaseIdentifier::=INTEGER(0..255)Rplmn-Information ::=BITSTRING(SIZE(7))設(shè)RRC-TransactionIdentifier取值為2,則編碼為11。ReleaseIdentifier取值為80,則編碼為01010000。Rplmn-Information取比特為”1011101在對(duì)齊方式下編碼為:110000000101000010111010在非對(duì)齊方式下編碼為:110101000010111010000000PER的譯碼過程與PER的編碼過程相反,與PER編碼不同的是,在譯碼之前并不知道程序的樹型結(jié)構(gòu),只有根據(jù)編的碼和3GPP文檔在譯碼的過程中才能將程序提取出來,若在此過程中出錯(cuò)一般不能馬上檢查出來,在后續(xù)的譯碼中能夠逐步的驗(yàn)證,因此譯碼過程也必須認(rèn)真謹(jǐn)慎,否則會(huì)走很多彎路??傊?通信協(xié)議的PER編譯碼是以3GPP的協(xié)議文檔為基礎(chǔ)的,在掌握其編譯碼規(guī)則之后,還要求認(rèn)真、細(xì)心的編譯協(xié)議,這樣才能夠正確的完成編譯碼。六、軟件的編譯碼對(duì)于軟件的編碼,還是以上面的手機(jī)釋放過程的RRCCONNECTIONRELEASE消息為例來說明:軟件的編碼的原理與上面的編碼原理一樣,但機(jī)器在編碼之前必須知道3GPP的標(biāo)準(zhǔn)協(xié)議25.331的程序結(jié)構(gòu),而且有相應(yīng)參數(shù)的賦值,這樣機(jī)器才能夠?qū)?shù)賦在固定的協(xié)議結(jié)構(gòu)中并編出唯一正確的碼,由于該流程中所有消息的ASN描述都在文檔25.331里面,因此我們只需在將25.331整個(gè)文檔當(dāng)成標(biāo)準(zhǔn)的ASN協(xié)議,然后給所要編碼的那條消息賦值后,控制軟件輸出相應(yīng)的消息編碼即可。下面將分步驟說明軟件編碼的過程:1.給所要編碼的消息RRCCONNECTIONRELEASE賦值,并將其加在將要運(yùn)行的ASN程序后面,在程序結(jié)束符END之前。下面是對(duì)RRC釋放的賦值(賦值的每個(gè)參數(shù)就是上面手工編碼時(shí)所選擇的參數(shù)):myRRCConnectionReleaseDL-CCCH-Message::={messagerrcConnectionRelease:r3:{rrcConnectionRelease-CCCH-r3{u-RNTI{srnc-Identity'000000000001'B,s-RNTI'00000000000000000001'B},rrcConnectionRelease-r3{rrc-TransactionIdentifier0,n-3082,releaseCausenormalEvent}}}}2.打開OSS軟件運(yùn)行界面。3.按下鍵,找到賦了值的ASN文件,然后點(diǎn)Add鍵,將該文件添加到運(yùn)行欄中。4.按下鍵,在Output.cFile中設(shè)置文件輸出的格式,由于該消息是在空中傳送的,為了盡量的減少冗余比特,協(xié)議規(guī)定了選擇PER的非對(duì)齊編碼方式。因此選擇UNALIGENDPERencode/decode項(xiàng)。5.按下鍵,若程序運(yùn)行無誤,ASN文件了生成.C和.H文件到OSS軟件的output文件夾中。6.將生成的.C和.H文件放入編碼的文件夾中使用NMAKE命令生成編碼。在編碼文件夾中包含有:lib、bin、include三個(gè)文件夾,這三個(gè)文件夾是從下載的OSS軟件中剪切過來的;五個(gè)應(yīng)用擴(kuò)展程序ossdmem.dll、cstrain.dll、ossapi.dll、soedper.dll、soedapi.dll;一個(gè)MS-DOS批處理文件switch.to.spartan.dlls;Makefile文件;common.mak文件;encode.c文件;ASN文件和它在OSS軟件中生成的.c和.h文件。其中makefile文件規(guī)定了ASN編碼的整個(gè)過程中的一系列規(guī)則,包括需要用到哪些鏈接文件,存放于哪個(gè)文件夾中,運(yùn)用了哪些隱含規(guī)則等等,encode.c文件則控制消息的編碼范圍。實(shí)際上我們下載的OSS軟件中有說明軟件以及編譯碼的實(shí)例,根據(jù)它所給的文件修改其中的一部分就能夠在DOS界面下運(yùn)行NMAKE命令實(shí)現(xiàn)軟件的編碼。7.輸出編碼的結(jié)果DL-CCCH-MessageSEQUENCE[fieldcount(notencoded)=1]messageDL-CCCH-MessageTypeCHOICE[index=2]rrcConnectionReleaseRRCConnectionRelease-CCCHCHOICE[index=0]r3SEQUENCE[fieldcount(notencoded)=1]

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論