0 引言 隨著嵌入式設(shè)備和通信網(wǎng)絡(luò)的飛速發(fā)展,消費(fèi)者對移動(dòng)通訊的需求不斷增加。電話系統(tǒng)成為消費(fèi)類嵌入式設(shè)備中一個(gè)非常重要的組成部分。在很多嵌入式系統(tǒng)中,應(yīng)用程序通過直接lhJGPRS模塊發(fā)送AT命令實(shí)現(xiàn)電話通訊功能。這種方法具有很大的硬件相關(guān)性,隨著應(yīng)用復(fù)雜度的增加會造成系統(tǒng)難以維護(hù),并且不具備可移植性。 無線接口層(RIL)最初是針對Windows Mobile操作系統(tǒng)引入的組件,用于屏蔽Modem硬件設(shè)備細(xì)節(jié)。RIL將上層應(yīng)用請求轉(zhuǎn)化為與具體硬件設(shè)備相關(guān)的AT命令發(fā)送給Modem設(shè)備,使上層軟件可以通過RIL無縫地與GSM/GPRS通信。上層軟件將RIL作為邏輯設(shè)備,發(fā)送與硬件設(shè)備無關(guān)的命令,實(shí)現(xiàn)和底層設(shè)備交互的功能。 由于RIL具有屏蔽底層硬件設(shè)備細(xì)節(jié)的特點(diǎn),因此本文在其基礎(chǔ)上進(jìn)行電話系統(tǒng)設(shè)計(jì),使電話系統(tǒng)具有較強(qiáng)的硬件無關(guān)性。本設(shè)計(jì)利用電話應(yīng)用程序接口(TAPI)實(shí)現(xiàn)電話基本功能,并且引入電話管理層,對電話系統(tǒng)進(jìn)行管理和優(yōu)化,使上層應(yīng)用和底層硬件設(shè)備完全剝離,使電話系統(tǒng)具有較強(qiáng)的可移植性。 1 基本原理 1.1 CPU和GPRS模塊通信原理 嵌入式系統(tǒng)的模塊化和可裁剪性決定了大多數(shù)嵌入式移動(dòng)設(shè)備都采用雙核架構(gòu)一核心的應(yīng)用處理器和基帶處理器GPRS模塊,兩者通過串口連接,采用握手方式發(fā)送AT命令進(jìn)行通信。通常上層應(yīng)用程序可以直接發(fā)送AT命令實(shí)現(xiàn)電話功能,但會使系統(tǒng)缺乏可移植性,并且系統(tǒng)狀態(tài)難以維護(hù)。 本設(shè)計(jì)所基于的RIL可以解決這個(gè)問題。RIL處于應(yīng)用程序之下,GPRS模塊之上,如圖l所示。RIL屏蔽了硬件上的細(xì)節(jié),負(fù)責(zé)傳輸數(shù)據(jù);發(fā)送AT命令;接收來自GSM/GPRS模塊的響應(yīng)。上層應(yīng)用只需將與設(shè)備無關(guān)的請求發(fā)送到RIL,由RIL實(shí)現(xiàn)與底層通訊硬件設(shè)備的交互。 ![]() 1.2 RIL原理 RIL分為RIL Driver和RIL Proxy兩部分。RIL Driver以流驅(qū)動(dòng)的方式實(shí)現(xiàn),負(fù)責(zé)AT命令的發(fā)送和響應(yīng)的接收,整個(gè)系統(tǒng)只有唯一的一個(gè)RIL Driver。每個(gè)應(yīng)用程序有獨(dú)立的RIL Proxy,和RIL DriverJ注行交互。應(yīng)用程序使用RIL的流程如圖2所示。 ![]() 首先應(yīng)用程序注冊到RIL Driver,獲得一個(gè)RIL Proxy。此后應(yīng)用程序通過RIL Proxy發(fā)送與硬件無關(guān)的請求。融L Proxy將請求發(fā)送給Device Manager,Device Manager根據(jù)控制碼將請求發(fā)送給RIL Driver。最后RIL Driver將上層應(yīng)用傳來的與設(shè)備無關(guān)的請求轉(zhuǎn)化為與具體硬件設(shè)備相關(guān)的AT命令寫到串口,發(fā)送給GPRS模塊,實(shí)現(xiàn)一次命令的發(fā)送。 同樣地,對于GPRS模塊返回的響應(yīng),RIL Driver從串口將命令讀出,將與硬件相關(guān)的響應(yīng)轉(zhuǎn)換為硬件無關(guān)的通知放入通知隊(duì)列,發(fā)送給相應(yīng)的RIL Proxy。 2 系統(tǒng)硬件架構(gòu) 本系統(tǒng)中作為核心的嵌入式開發(fā)板采用的應(yīng)用處理器為Monahans310,通過串口與SIMCOM公司生產(chǎn)的型號為SIM300D的GPRS模塊相連。應(yīng)用處理器通過串口向GPRS模塊發(fā)送AT命令實(shí)現(xiàn)電話、短信、上網(wǎng)等功能。系統(tǒng)硬件如圖3所示。SIM300D支持MUX功能,支持?jǐn)?shù)據(jù)和語音的同步傳送,并與音頻模塊9713相連,實(shí)現(xiàn)語音輸入輸出功能。 ![]() 3 軟件設(shè)計(jì)與實(shí)現(xiàn) 本文所設(shè)計(jì)的電話系統(tǒng)以RIL為基礎(chǔ),利用電話應(yīng)用程序接口(TAPI)實(shí)現(xiàn)電話功能。本設(shè)計(jì)中電話系統(tǒng)的主體是電話管理層,在電話管理層中實(shí)現(xiàn)電話功能、電話管理和電話系統(tǒng)優(yōu)化。電話管理層的引入降低了應(yīng)用程序和設(shè)備硬件的相關(guān)性,增強(qiáng)了系統(tǒng)的可移植性。 3.1電話管理層架構(gòu) 電話管理層的作用有以下三點(diǎn):利用TAPI實(shí)現(xiàn)電話呼入、撥出、切換等功能;對電話進(jìn)行管理,實(shí)現(xiàn)多路電話切換,增強(qiáng)電話系統(tǒng)的健壯性;封裝TSP(電話服務(wù)提供接口)消息,使上層用戶程序不依賴于具體TSP消息,增強(qiáng)了電話系統(tǒng)的可移植性。 電話管理層由TAPI線路功能模塊CTapiLine、電話管理模塊CCallManager和輔助模塊三部分組成,如圖4所示。 ![]() TAPI線路功能模塊負(fù)責(zé)利用TAPI創(chuàng)建電話線路,實(shí)現(xiàn)電話功能。該模塊采用Singleton設(shè)計(jì)模式,對于一個(gè)用戶應(yīng)用程序只有唯一的TAPI線路功能模塊對象,這使所有電話都只有在唯一線路上操作。 電話管理模塊CCallManager實(shí)現(xiàn)電話的管理,和TsP消息的封裝。上層用戶應(yīng)用程序只和電話管理類交互。TAPL線路功能模塊和電話管理模塊之間采用消息隊(duì)列進(jìn)行通信,降低了模塊間的依賴性。通話記錄模塊CRecordManager和通訊錄模塊CContactManager是輔助模塊,進(jìn)行數(shù)據(jù)庫的讀寫。 3.2電話功能實(shí)現(xiàn) 電話管理層在TAPI線路功能模塊中利用TAPI實(shí)現(xiàn)電話呼入、撥出、切換等功能。TAPI采用客戶端服務(wù)端模式,由TAPI和TSP兩個(gè)部分所組成。TAPI處于客戶端,為上層應(yīng)用提供API。TSP處于服務(wù)端,由通信設(shè)備制造商提供,操作來A符合TAPI規(guī)范的應(yīng)用的請求。 由于電話系統(tǒng)基于RIL,在利用TAPI函數(shù)linelnitialize初始化線路時(shí),向RIL Driver進(jìn)行注冊,并獲得屬于電話進(jìn)程的RIL Proxy。初始化線路的同時(shí)指定接收兩P返回消息的回調(diào)函數(shù)lineCallbackFunc。因此對TAPI的調(diào)用最終通過RIL Proxy發(fā)往RIL Driver,RIL Driver收到的相應(yīng)消息經(jīng)過TSP返回給回調(diào)函數(shù)。 由于在TAPI中以句柄HCALL為唯一標(biāo)識對電話的操作,因此在TAPI線路功能模塊中將電話的句柄和號碼進(jìn)行一一映射,句柄用于功能實(shí)現(xiàn),號碼用于和電話管理模塊的交互。 3.3多個(gè)電話的管理 電話管理模塊對當(dāng)前所有電話進(jìn)行管理。電話管理模塊維護(hù)一個(gè)響鈴狀態(tài)電話m_pRingingCall和一個(gè)用于存放所有處于連接(接通、保持)狀態(tài)電話的容器m_vCalls。每個(gè)電話以號碼作為唯一ID,電話的狀態(tài)包括:響鈴(包括來電響鈴和呼出撥號響鈴)、活動(dòng)、保持、斷開。狀態(tài)的轉(zhuǎn)換如圖5所示。電話管理模塊管理各電話狀態(tài)間的切換,例如通話中接聽新來電,電話管理模塊將原電話狀態(tài)由活動(dòng)轉(zhuǎn)為保持,將新電話狀態(tài)由響鈴轉(zhuǎn)為活動(dòng)并放入m_vCalls。電話管理模塊使得任意時(shí)刻用戶可以方便地獲得電話系統(tǒng)的狀態(tài)和當(dāng)前電話的信息。 ![]() 3.4電話系統(tǒng)優(yōu)化 磷腿早已成為標(biāo)準(zhǔn)接口,但是由于髓瑚∈用異步消息處理機(jī)制,同時(shí)這些消息又與通訊設(shè)備模塊密切相關(guān),造成了電話應(yīng)用程序開發(fā)上的困難,同時(shí)使應(yīng)用程序的可設(shè)移計(jì)植在性刪較路差功,能不模利塊于中消費(fèi)只類對電標(biāo)子準(zhǔn)產(chǎn)刪品息的做開出發(fā)響。因應(yīng)此,本而將具體電話狀態(tài)細(xì)節(jié)交由電話管理模塊分析。 以電話掛斷為例(如圖6所示)。在線路功能模塊會收到堿斷消息LINECALLSTATE_DISCONNECTED,任何通訊設(shè)備模塊都會支持這個(gè)消息。這個(gè)消息根據(jù)不同掛斷情況又細(xì)分了不同的子消息,如表示對方電話正忙的LINEDISCONNECTMODE_BUSY 消息,表示對方普通掛斷的LINEDISCONNECT_NORMAL消息等。這些消息和具體的通訊設(shè)備模塊相關(guān),SIM300D沒有這些子消息,因此不能讓用戶應(yīng)用程序直接與TAPI交互,需要引入電話管理模塊。在TAPI線路功能模塊中在接收到LINECALLSTATE_DISCONNECTED消息后向電話管理模塊發(fā)送斷開消息,由電話管理模塊根據(jù)電話的狀態(tài)(例如是否是接通電話,是否主動(dòng)掛斷)分析掛斷的原因通知上層用戶應(yīng)用程序。這樣就增強(qiáng)了電話系統(tǒng)的可移植性。 ![]() 4 結(jié)語 本文介紹了基于Momhans310處理器和Windows CE 6.0操作系統(tǒng)的電話系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)。目前已經(jīng)在平臺上穩(wěn)定運(yùn)行,性能穩(wěn)定、健壯、可移植性高。 參考文獻(xiàn) 1. Microsoft.Microsoft ![]() 2. Micosoft.Microsoft WindowsCE60 HLEP[DB/CD].March2003 3. Microsoft Microsoft Radio Interface Layer Whitepaper[DB/CD].http://www.informationweek.com/whitepaper/Wireless /wp901606?articlelD=901606,2004 4. 鮑棟等.基于TAPI的計(jì)算機(jī)電話集成的設(shè)計(jì)與實(shí)現(xiàn)[J].電子科技,2006,(6):52-55 5. 黃求根,等.TAPl3.0體系結(jié)構(gòu)與應(yīng)用[J].計(jì)算機(jī)應(yīng)用研究,2000,(1):33-34 6. 王慶剛,楊佃福.GPRS技術(shù)在嵌入式系統(tǒng)中的應(yīng)用[J].微計(jì)算機(jī)信息,2005,21(5):69-70 作者:東南大學(xué) 桂潔 張哲 來源:電子技術(shù) 2009 36(11) |