一種rrc狀態(tài)機(jī)實(shí)現(xiàn)方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于無線通信領(lǐng)域,具體涉及一種RRC狀態(tài)機(jī)實(shí)現(xiàn)方法及裝置。
【背景技術(shù)】
[0002]RRC(Rad1 Resource Control,無線資源控制)是層3控制面協(xié)議,是GMR-1 3G系統(tǒng)中空中接口部分協(xié)議??刂泼婀δ艿膶?shí)際載體,負(fù)責(zé)空中接口無線鏈路過程的執(zhí)行。主要負(fù)責(zé)無線資源的分配與管理、系統(tǒng)消息廣播、尋呼、RRC連接建立和釋放、RRC連接移動(dòng)性管理(小區(qū)更新、GRA更新)、RB管理、NAS層消息傳遞、測(cè)量控制、加密等等。
[0003]RRC層主要分為空閑狀態(tài)和連接狀態(tài),其中連接狀態(tài)又細(xì)分為RRC-Cell_Shared、RRC-Cell_Dedicated和RRC_GRA_PCH三種狀態(tài)。RRC連接模式下,RRC層會(huì)執(zhí)行相關(guān)的過程,進(jìn)而實(shí)現(xiàn)相關(guān)的功能。
[0004]RRC消息的觸發(fā)和執(zhí)行使用一個(gè)線程進(jìn)行控制,由狀態(tài)機(jī)進(jìn)行過程執(zhí)行的決策控制。所以,狀態(tài)機(jī)的實(shí)現(xiàn)是開發(fā)協(xié)議棧RRC層的核心部分,通過接收RRC消息的到來以及根據(jù)RRC消息的接收情況來觸發(fā)相應(yīng)的RRC處理過程,從而實(shí)現(xiàn)狀態(tài)機(jī)的跳轉(zhuǎn),維持協(xié)議棧的運(yùn)行。另外,在收到上層或下層實(shí)時(shí)性的請(qǐng)求,狀態(tài)機(jī)控制模塊能夠做出正確處理。在整個(gè)子系統(tǒng)運(yùn)行過程中,狀態(tài)機(jī)控制模塊還能夠管理和維護(hù)RRC過程,包括并行性處理,過程的事務(wù)性管理。對(duì)具有事務(wù)性處理的過程能夠保存和恢復(fù)過程的正確狀態(tài)。因此,如何設(shè)計(jì)狀態(tài)機(jī)使其更清晰地維護(hù)狀態(tài)機(jī)跳轉(zhuǎn),同時(shí)高效地完成RRC的各個(gè)過程,將直接影響著整個(gè)協(xié)議棧的運(yùn)行效率和穩(wěn)定性。
[0005]狀態(tài)機(jī)的一般運(yùn)行方式是:在某個(gè)狀態(tài)下,收到某個(gè)事件,執(zhí)行相應(yīng)的動(dòng)作,轉(zhuǎn)到相應(yīng)的狀態(tài),再在新的狀態(tài)下,重復(fù)上述循環(huán),直至結(jié)束。其中事件可以是收到的消息,某個(gè)定時(shí)器的到達(dá)等;相應(yīng)的動(dòng)作一般可以是執(zhí)行相應(yīng)的函數(shù)處理等。
[0006]現(xiàn)有技術(shù)主要針對(duì)一般復(fù)雜度的狀態(tài)機(jī)系統(tǒng),涉及到的有單一并行狀態(tài)機(jī)的處理,有單一串行狀態(tài)機(jī)的處理;有采用狀態(tài)機(jī)族方法,有采用兩層狀態(tài)機(jī)結(jié)構(gòu),有表格驅(qū)動(dòng)的,有基于狀態(tài)事件的數(shù)組結(jié)構(gòu)的。而RRC層協(xié)議棧狀態(tài)機(jī)復(fù)雜,涉及的過程較多,現(xiàn)有的技術(shù)沒有完全考慮到RRC層協(xié)議棧的特點(diǎn),實(shí)現(xiàn)起來,要么消耗過多的資源,要么線程多,運(yùn)行繁雜,造成后續(xù)開發(fā)維護(hù)困難,影響整個(gè)系統(tǒng)的穩(wěn)定性。
【發(fā)明內(nèi)容】
[0007]本發(fā)明的目的是針對(duì)RRC協(xié)議棧的特點(diǎn),提出了一種適合RRC狀態(tài)機(jī)運(yùn)行的RRC狀態(tài)機(jī)實(shí)現(xiàn)方法及裝置,解決協(xié)議棧開發(fā)運(yùn)行時(shí)資源消耗多、運(yùn)行維護(hù)復(fù)雜等問題,簡(jiǎn)化了狀態(tài)機(jī)的復(fù)雜度,保證系統(tǒng)運(yùn)行的高效性和穩(wěn)定性。
[0008]本發(fā)明采取的技術(shù)方案之一是:一種RRC狀態(tài)機(jī)實(shí)現(xiàn)方法,該方法將RRC的各個(gè)功能分類,明確過程之間的相互關(guān)系和優(yōu)先級(jí),對(duì)每一個(gè)可能引起RRC_Idle、RRC-Ce11_Shared,RRC-Cell_Dedicated和RRC_GRA_PCH基本狀態(tài)改變的功能過程,添加過程執(zhí)行的各個(gè)觸發(fā)子狀態(tài);實(shí)現(xiàn)步驟如下: (1)用結(jié)構(gòu)數(shù)組記錄所有過程中出現(xiàn)的狀態(tài)事件及對(duì)應(yīng)的處理函數(shù),并初始化;
(2)當(dāng)接收到事件后,確定事件類型,再判斷當(dāng)前的狀態(tài),判斷當(dāng)前的狀態(tài)下收到的事件是否在結(jié)構(gòu)數(shù)組記錄中有相應(yīng)的處理函數(shù),若有,調(diào)用回調(diào)函數(shù)執(zhí)行相應(yīng)的函數(shù),將狀態(tài)改變到新的狀態(tài);若沒有相應(yīng)的處理函數(shù),則丟棄收到的消息,不作處理,狀態(tài)保持不變;
(3)重復(fù)步驟(2),過程直至結(jié)束。
[0009]進(jìn)一步的,所述結(jié)構(gòu)數(shù)組的構(gòu)成如下:
結(jié)構(gòu)數(shù)組3{
參數(shù)I狀態(tài);
參數(shù)2事件;
參數(shù)3回調(diào)函數(shù)(形參1,形參2,形參3);
} rrc_sm[] = {
{狀態(tài)0,事件1,函數(shù)1},
{狀態(tài)1,事件2,函數(shù)2},
{狀態(tài)2,事件3,函數(shù)3},
{狀態(tài)2,事件1,函數(shù)4},.........其他……
{狀態(tài)4,事件1,函數(shù)2}
} ; O
[0010]所述結(jié)構(gòu)數(shù)組中的參數(shù)3是一個(gè)回調(diào)函數(shù),函數(shù)1、2、3、4有相同的形參,符合回調(diào)函數(shù)的要求。
[0011]進(jìn)一步的,所述回調(diào)函數(shù)構(gòu)成如下:
循環(huán)判斷for(i=0; i〈rrm_sm數(shù)組大小;i++) {
if (收到事件所處的狀態(tài)==rrm_sm[i]中的狀態(tài)且收到的事件==rrm_sm[i]中的事件){
執(zhí)行rrm_sm[i]對(duì)應(yīng)的回調(diào)函數(shù)}
1
[0012]所述的方法中,RRC層的信令過程包括RRC連接建立過程、初始直傳過程、上下行直傳過程、小區(qū)更新過程;其中RRC連接建立過程要先完成,這個(gè)過程分為0、1、2三個(gè)小的子狀態(tài),該過程完成后基本狀態(tài)從空閑狀態(tài)轉(zhuǎn)到連接狀態(tài),在所述的連接狀態(tài)下,初始直傳過程、上下行直傳過程、小區(qū)更新過程都可以發(fā)生,但是上下行直傳過程必須要等到初始直傳過程發(fā)生后才能完成,而小區(qū)更新過程和初始直傳過程沒有聯(lián)系,小區(qū)更新過程的優(yōu)先級(jí)高。這樣,在完成RRC連接建立過程后,如果同時(shí)收到初始直傳過程、上下行直傳和小區(qū)更新過程的事件,則優(yōu)先處理小區(qū)更新過程。
[0013]進(jìn)一步的,所述初始直傳過程包括子狀態(tài)3、4、5,上下行直傳過程包括子狀態(tài)6、7,小區(qū)更新過程包括子狀態(tài)8、9、10 ;所述子狀態(tài)3、4、5、6、7、8、9、10都處在一個(gè)大的基本狀態(tài)下,在這個(gè)大的基本狀態(tài)下,只要收到最高優(yōu)先級(jí)的事件觸發(fā)小區(qū)更新過程,就立即轉(zhuǎn)到子狀態(tài)8執(zhí)行小區(qū)更新過程。
[0014]本發(fā)明采取的技術(shù)方案之二是:
一種RRC狀態(tài)機(jī)實(shí)現(xiàn)裝置,其包括: 記錄單元:記錄所有過程的子狀態(tài)以及在該子狀態(tài)下可能收到哪個(gè)事件,并能作出哪種響應(yīng);然后存儲(chǔ)下來;
接收單元:當(dāng)狀態(tài)機(jī)啟動(dòng)后,用于接收外部來的或本身的觸發(fā)事件,確定事件類型,在記錄單元中查找對(duì)應(yīng)當(dāng)前狀態(tài)和事件存在的響應(yīng);
回調(diào)單元:回調(diào)當(dāng)前狀態(tài)和事件對(duì)應(yīng)的響應(yīng);
執(zhí)行單元:執(zhí)行實(shí)際的響應(yīng),轉(zhuǎn)變到新的狀態(tài)。
[0015]本發(fā)明的有益效果是:本發(fā)明采用單一線程來管理狀態(tài)機(jī)運(yùn)行,將協(xié)議棧中的各個(gè)過程首先分解成子狀態(tài)觸發(fā),用數(shù)組結(jié)構(gòu)形式存儲(chǔ)狀態(tài)事件及對(duì)應(yīng)的處理函數(shù),處理函數(shù)表示成回調(diào)函數(shù)形式,只需用一個(gè)上述數(shù)組結(jié)構(gòu)就能完全將協(xié)議棧所有過程之間的關(guān)系和優(yōu)先級(jí)體現(xiàn)出來,節(jié)省資源,簡(jiǎn)化協(xié)議棧的開發(fā),提高協(xié)議棧運(yùn)行的效率和穩(wěn)定性,使?fàn)顟B(tài)機(jī)支持信令連接級(jí)獨(dú)立運(yùn)行,及多業(yè)務(wù)并存。實(shí)際開發(fā)中,代碼清晰,協(xié)議后續(xù)若有擴(kuò)展過程,可快速、準(zhǔn)確、靈活地將新過程加入到狀態(tài)機(jī)控制中,節(jié)省開發(fā)時(shí)間,并且,代碼簡(jiǎn)單,易于維護(hù)。
【附圖說明】
[0016]圖1是狀態(tài)機(jī)運(yùn)行流程圖。
[0017]圖2是狀態(tài)轉(zhuǎn)移圖。
[0018]圖3是狀態(tài)機(jī)實(shí)現(xiàn)裝置結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0019]下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步說明。
[0020]本發(fā)明提供一種針對(duì)GMR-1 3G RRC協(xié)議棧狀態(tài)機(jī)的實(shí)現(xiàn)方法和裝置,根據(jù)RRC層協(xié)議棧的復(fù)雜度以及涉及到的過程的相互關(guān)系,對(duì)每一個(gè)可能引起4個(gè)基本狀態(tài)改變(RRC_Idle、RRC-Cell_Shared、RRC_Cell_Dedicated 和 RRC_GRA_PCH)的功能過程,添加了該過程執(zhí)行的各個(gè)觸發(fā)子狀態(tài),以此來控制各個(gè)過程中對(duì)接收到相應(yīng)消息的處理判斷,通過單一線程來管理協(xié)議棧的運(yùn)行,保證了協(xié)議棧運(yùn)行的高效和穩(wěn)定。提出的裝置包括:記錄單元、接收單元、回調(diào)單元、執(zhí)行單元。
[0021]本發(fā)明首先根據(jù)協(xié)議,將RRC的各個(gè)功能分類,哪些過程必須是按先后順序?qū)崿F(xiàn)的,之間有明確的因果關(guān)系;哪些是可以并行實(shí)現(xiàn)的,即在某個(gè)狀態(tài)下都有可能發(fā)生;哪些功能的實(shí)現(xiàn)優(yōu)先級(jí)最高;然后再添加各個(gè)過程的觸發(fā)子狀態(tài),明確哪個(gè)子狀態(tài)能收到哪條消息(對(duì)應(yīng)事件),執(zhí)行什么樣的動(dòng)作(對(duì)應(yīng)處理函數(shù));之后將其記錄保存下來,可以用狀態(tài)事件表保存,也可以利用數(shù)組保存,保證記錄的完整準(zhǔn)確,同時(shí)要能體現(xiàn)過程之間的相互關(guān)系和優(yōu)先級(jí)。實(shí)現(xiàn)的流程圖如I所示,具體實(shí)現(xiàn)步驟如下:
I)用結(jié)構(gòu)數(shù)組記錄所有過程中出現(xiàn)的狀態(tài)事件及對(duì)應(yīng)的處理函數(shù),并初始化,數(shù)組結(jié)構(gòu)構(gòu)成如下:
struct rrc_state {uintstate;uintevent;
int (木route) (int a, int b, void木 c);} rrc_sm[] = {
{狀態(tài)0,事件1,函數(shù)1},
{狀態(tài)1,事件2,函數(shù)2},
{狀態(tài)2,事件3,函數(shù)3},
{狀態(tài)2,事件1,函數(shù)4},
{狀態(tài)4,事件1,函數(shù)2}
};
上述數(shù)組結(jié)構(gòu)中的route是一個(gè)回調(diào)函數(shù),函數(shù)1、2