鄭 熠,王志華
(1.中國電子科技集團(tuán)公司第五十四研究所,河北石家莊050081;2.鄭州大學(xué)軟件技術(shù)學(xué)院,河南鄭州450002)
交換機(jī)軟件用來實(shí)現(xiàn)交換機(jī)的全部智能性操作,呼叫處理軟件是交換機(jī)軟件的核心部分。
為了解決呼叫處理軟件實(shí)時(shí)性和并發(fā)性特點(diǎn),在此給出的呼叫處理模型采用VxWorks嵌入式操作系統(tǒng);基于實(shí)時(shí)、多任務(wù)的嵌入式軟件架構(gòu)設(shè)計(jì)要達(dá)到分事件、實(shí)時(shí)處理多任務(wù)的要求,采用層次結(jié)構(gòu)的軟件架構(gòu)進(jìn)行軟件設(shè)計(jì);并且引入有限狀態(tài)機(jī)(FSM)技術(shù),其作為計(jì)算機(jī)的基礎(chǔ)理論最早被應(yīng)用于編譯器的句法分析和語言識(shí)別?,F(xiàn)階段,有限狀態(tài)機(jī)被廣泛應(yīng)用在呼叫處理程序設(shè)計(jì)中,此項(xiàng)技術(shù)的使用使得程序結(jié)構(gòu)變得非常清晰,大大降低了嵌入式軟件開發(fā)的難度[1]。
VxWorks是專門為實(shí)時(shí)嵌入式系統(tǒng)設(shè)計(jì)開發(fā)的操作系統(tǒng)內(nèi)核,為程序員提供了高效的實(shí)時(shí)多任務(wù)調(diào)度、中斷管理,實(shí)時(shí)的系統(tǒng)資源以及實(shí)時(shí)的任務(wù)間通信。在各種CPU平臺(tái)上提供了統(tǒng)一的編程接口和一致的運(yùn)行特性,盡可能地屏蔽了不同CPU之間的底層差異。
VxWorks的一個(gè)重要特點(diǎn)是可移植性,把所有特定的硬件功能都集成在板級(jí)支持包(Board Suppon Package,BSP)中,使得上層軟件在很大程度上與目標(biāo)板的硬件結(jié)構(gòu)無關(guān)[2]。
呼叫處理模型采用嵌入式開發(fā)模式,實(shí)時(shí)多任務(wù)操作系統(tǒng)VxWorks5.5,開發(fā)環(huán)境為Tornado2.2集成開發(fā)環(huán)境,調(diào)試工具采用Tornado2.2集成調(diào)試環(huán)境和VisionClick 7.1。
嵌入式應(yīng)用軟件常用的結(jié)構(gòu)是層次結(jié)構(gòu)。層次結(jié)構(gòu)就是利用分層的方式來處理復(fù)雜的功能,層次結(jié)構(gòu)要求上層可以使用下層的功能,而下層不能使用上層的功能。一般下層每個(gè)程序接口執(zhí)行當(dāng)前的一個(gè)簡單功能,而上層通過調(diào)用不同的下層程序,并按不同的順序來執(zhí)行這些下層程序。
圖1 呼叫處理軟件結(jié)構(gòu)
呼叫處理軟件建立分層結(jié)構(gòu)模型,共包含以下幾個(gè)模塊:呼叫控制軟件、信令適配軟件和自組網(wǎng)路由軟件;分上下2層,呼叫控制軟件位于上層,信令適配軟件和自組網(wǎng)路由軟件位于下層。信令適配軟件包括的信令協(xié)議有:模擬用戶信令、CPC信令和自組網(wǎng)信令,對(duì)上與呼叫控制軟件按統(tǒng)一的消息交互,通過原語方式進(jìn)行通信,完成各種信令協(xié)議到呼叫控制軟件統(tǒng)一接口的適配工作。呼叫處理軟件的分層模型如圖1所示。
維護(hù)管理軟件為呼叫處理軟件提供維護(hù)和管理功能,包括主被叫的相關(guān)信息、話音呼叫涉及的數(shù)據(jù)信息和IP業(yè)務(wù)所需的參數(shù)信息。
呼叫處理軟件對(duì)IP業(yè)務(wù)軟件采用函數(shù)調(diào)用方式,以獲取被叫號(hào)碼所在用戶站號(hào)、路由和業(yè)務(wù)帶寬。
底層驅(qū)動(dòng)軟件(BSP軟件)實(shí)現(xiàn)的功能有動(dòng)態(tài)組網(wǎng)信令、G729編解碼、可靠性傳輸和PPP協(xié)議等適配,對(duì)MPC8260初始化以及外圍接口的驅(qū)動(dòng),呼叫處理軟件通過函數(shù)調(diào)用與BSP軟件進(jìn)行交互。
有限狀態(tài)機(jī)的作用主要是描述對(duì)象在它的生命周期內(nèi)所經(jīng)歷的狀態(tài)序列,以及如何響應(yīng)來自外界的各種事件[3]。
有限狀態(tài)機(jī)FSM由有限的狀態(tài)和相互之間的轉(zhuǎn)移構(gòu)成。當(dāng)接收到一個(gè)輸人事件時(shí),狀態(tài)機(jī)產(chǎn)生一個(gè)輸出,同時(shí)也可能伴隨著狀態(tài)的轉(zhuǎn)移。有限狀態(tài)機(jī)各狀態(tài)之間的狀態(tài)轉(zhuǎn)移可以看成是在瞬時(shí)完成的,因此可以認(rèn)為有限狀態(tài)機(jī)總是處于狀態(tài)集的某一狀態(tài)的[4]。
呼叫處理模型根據(jù)呼叫的各個(gè)階段定義控制實(shí)體的有限狀態(tài)機(jī),完成無線接入系統(tǒng)的各種呼叫控制流程。控制實(shí)體的有限狀態(tài)機(jī)包含以下狀態(tài):空閑狀態(tài)、收號(hào)狀態(tài)、等待振鈴狀態(tài)、等待摘機(jī)狀態(tài)、通話狀態(tài)和等待釋放狀態(tài)。呼叫控制實(shí)體通過收到的信令類型和當(dāng)前所處的狀態(tài)來判斷下一步的遷移狀態(tài)。
呼叫處理軟件中控制實(shí)體的基本狀態(tài)遷移如圖2所示。
圖2 控制實(shí)體狀態(tài)遷移
呼叫控制功能完成話音呼叫的過程控制,任務(wù)是分析主叫呼叫請(qǐng)求,向被叫發(fā)起呼叫,被叫應(yīng)答后建立接續(xù),通話完成后釋放呼叫。一個(gè)呼叫邏輯上由主叫和被叫2個(gè)信令處理實(shí)體組成,呼叫過程一般是由主叫信令處理實(shí)體發(fā)起,由呼叫控制功能實(shí)體控制主被叫信令處理實(shí)體完成整個(gè)呼叫過程。
呼叫實(shí)體在呼叫控制軟件設(shè)計(jì)中是很重要一部分,在本系統(tǒng)中,呼叫處理軟件的呼叫實(shí)體記錄了主叫與被叫呼叫信息、路由信息、資源帶寬、呼叫類型以及當(dāng)前呼叫所處狀態(tài)等信息。
呼叫控制軟件的主要過程是接收信令處理軟件的原語,根據(jù)原語所帶參數(shù)進(jìn)行主叫分析、號(hào)碼分析、分配呼叫資源、被叫對(duì)象分析、選擇被叫路由、硬件連接控制、主被叫的下一步的動(dòng)作處理和釋放控制等。
呼叫控制實(shí)體的數(shù)據(jù)結(jié)構(gòu)分為兩大部分:全局信息,屬于一個(gè)呼叫的整體特性,包括狀態(tài)等,不屬于呼叫的某一方;主被叫信息,記錄了主被叫狀態(tài),路由等一系列參數(shù),如表1所示。
表1 呼叫控制實(shí)體主被叫信息
呼叫控制軟件共設(shè)計(jì)了4個(gè)模塊,主處理模塊代表了呼叫處理任務(wù),一旦系統(tǒng)開始運(yùn)行,主處理模塊先調(diào)用初始化模塊,然后循環(huán)從消息隊(duì)列中接收信令,并進(jìn)行分析,根據(jù)信令內(nèi)容查詢呼叫實(shí)體或分配新的呼叫實(shí)體,最后調(diào)用狀態(tài)機(jī)模塊進(jìn)行相應(yīng)處理。狀態(tài)機(jī)模塊通過調(diào)用數(shù)據(jù)管理模塊的函數(shù)來完成相應(yīng)功能。
圖3 入站呼叫模擬用戶信令流圖
呼叫控制功能是完成話音呼叫的過程控制。以入站呼叫模擬用戶為例說明其呼叫流程,如圖3所示,CC表示呼叫處理,SP表示信令處理,Line表示模擬用戶,Adhoc表示自組網(wǎng)用戶。
入站呼叫模擬用戶實(shí)現(xiàn)其他用戶站用戶呼叫本站模擬用戶時(shí)的呼叫控制過程,包括對(duì)來自自組網(wǎng)信令呼叫請(qǐng)求指示的識(shí)別,分析被叫號(hào)碼,根據(jù)號(hào)碼得到被叫用戶的電路位置,然后向被叫用戶發(fā)起呼叫,識(shí)別被叫應(yīng)答指示,協(xié)商話音編碼,建立內(nèi)部接續(xù),通話結(jié)束后,拆除內(nèi)部接續(xù),釋放呼叫。
功能測試采用人工手動(dòng)測試的方法,用于呼叫處理的功能驗(yàn)證。
首先需要進(jìn)行的是模擬系統(tǒng)測試,旨在考察呼叫處理軟件本身在整體邏輯功能上是否符合呼叫流程。具體步驟包括:編寫測試用例、監(jiān)測消息及原語、分析呼叫流程。
進(jìn)行了上述測試之后,需要進(jìn)行CC和SP以及維護(hù)軟件模塊間的模擬聯(lián)合測試,旨在考察CC與SP之間的原語內(nèi)容和時(shí)序上的一致性,以及CC與維護(hù)軟件接口的正確性。具體步驟包括:編寫測試用例;調(diào)用測試函數(shù);CC響應(yīng);顯示消息或原語;判斷一致性。
2臺(tái)用戶站中間通過速率為2M的無線中繼相連,組成簡單網(wǎng)絡(luò)。呼叫模擬器和2臺(tái)用戶站同時(shí)相連,模擬2臺(tái)用戶站的各7部模擬話機(jī)進(jìn)行連續(xù)呼叫測試。Abacus5000呼叫模擬器可以自動(dòng)生成測試報(bào)告。
為了提高測試的有效性,可以利用調(diào)整呼叫模擬器的呼叫時(shí)間參數(shù)來改變呼叫的強(qiáng)度。
進(jìn)行功能測試時(shí),呼叫處理軟件的顯示輸出結(jié)果和狀態(tài)遷移完全符合呼叫流程,從而證明了呼叫處理軟件在整體功能上的正確性,以及呼叫處理軟件與信令軟件在消息原語及時(shí)序上的一致性。
進(jìn)行呼損測試時(shí),在不同時(shí)間進(jìn)行了2次連續(xù)呼叫測試。第1次呼叫時(shí)長為2h9min5s,錯(cuò)誤次數(shù)為4次。第2次總呼叫時(shí)長為2h 20min 15s,錯(cuò)誤數(shù)為0。
呼損測試的結(jié)果表明:呼叫處理軟件具有同時(shí)處理多呼叫的能力,證明了本軟件對(duì)實(shí)時(shí)性和并發(fā)性等事件的處理性能。
綜合功能測試和大話務(wù)量呼損測試的測試結(jié)果,可以得出以下結(jié)論:呼叫處理軟件實(shí)現(xiàn)了預(yù)期功能;呼叫處理分層軟件模型簡單合理;呼叫實(shí)體抽象合理,該分層模型易于擴(kuò)展。
應(yīng)用于某專用無線接入系統(tǒng)的嵌入式呼叫處理軟件,采用了有限狀態(tài)機(jī)技術(shù),根據(jù)實(shí)際需求設(shè)計(jì)了呼叫實(shí)體,建立了有限狀態(tài)機(jī)模型和狀態(tài)遷移圖,使得復(fù)雜的呼叫流程易于描述實(shí)現(xiàn);整個(gè)呼叫處理模型采用分層軟件架構(gòu)設(shè)計(jì),信令適配模塊完成各種信令協(xié)議到通用呼叫處理模型統(tǒng)一接口的適配工作,可以靈活應(yīng)用于具有同類信令的通信系統(tǒng)交換軟件,增強(qiáng)了呼叫處理軟件的可擴(kuò)展性和可重用性。
[1]李曉鋒,宋 銳,曾小寶.有限狀態(tài)機(jī)在嵌入式系統(tǒng)中的實(shí)現(xiàn)及應(yīng)用[J].機(jī)械與電器,2008(4):38-39.
[2]風(fēng)河公司.VxWorks程序員指南[M].北京:清華大學(xué)出版社,2003.
[3]李 光.大型有限狀態(tài)機(jī)系統(tǒng)中的定時(shí)器設(shè)計(jì)[J].無線電工程,2005,35(6):58-60.
[4]周 飚,謝曉陽.有限狀態(tài)機(jī)在RTC設(shè)計(jì)中的分析與應(yīng)用[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2008(5):77-80.