<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于嵌入式Linux的網(wǎng)絡(luò)語音平臺的設(shè)計與構(gòu)建

          基于嵌入式Linux的網(wǎng)絡(luò)語音平臺的設(shè)計與構(gòu)建

          作者: 時間:2009-04-09 來源:網(wǎng)絡(luò) 收藏

          以內(nèi)核態(tài)運(yùn)行的程序主要包括SLIC控制模塊、DSR控制模塊及接口和DSR數(shù)據(jù)模塊這三部分,它們基本完成了底層所需的功能要求。用戶態(tài)的程序都是運(yùn)行在其上,對其進(jìn)行管理控制,以實現(xiàn)上層的應(yīng)用。
            (1)SLIC控制模塊
            由于整個包含有FXS和FXO接口,故SLIC控制模塊也可以相應(yīng)地分為兩部分。
            對于FXS接口程序部分,其主要是模擬PSTN局端功能,對提供撥號音、電池電流與振鈴電壓和檢測來自電話的環(huán)路關(guān)閉進(jìn)行相應(yīng)地控制。當(dāng)有控制信息需要輸出時,驅(qū)動程序通過向SLIC芯片的C1、C2和C3管腳寫入相應(yīng)的電平,實現(xiàn)對SLIC的控制(具體數(shù)值可參看表1)??梢愿鶕?jù)SLIC所處的狀態(tài)進(jìn)行劃分,設(shè)置如下四種狀態(tài):fxs_ring,fxs_take,fxs_onhook,fxs_offhook。當(dāng)其處在fxs_ring狀態(tài)下就可以為FXS接口提供撥號音、振鈴等信號;當(dāng)其處在fxs_take狀態(tài)下表明用戶剛剛摘機(jī);當(dāng)其處在fxs_offhook狀態(tài)下表明該終端用戶為主動呼叫者,需要處理摘機(jī)以后的操作;當(dāng)其處在fxs_onhook狀態(tài)下表明用戶掛機(jī)。
            相應(yīng)的,當(dāng)SLIC有中斷輸入時,中斷處理程序會根據(jù)當(dāng)前的狀態(tài)來判斷。如果確定是用戶進(jìn)行了摘機(jī)或掛機(jī)操作后,查詢最后一次硬中斷后該路SLIC的電平,為0則處于摘機(jī)狀態(tài),否則處于掛機(jī)狀態(tài)。這里中斷的處理較為重要。其內(nèi)容包括:中斷源是由哪個FXS端口發(fā)出的,并根據(jù)所處的狀態(tài)來開啟相應(yīng)狀態(tài)下的定時器,以保證狀態(tài)變化間的時間間隔。
            對于FXO接口程序部分,其主要是模擬電話機(jī)的功能,所以功能相對要簡單些。在程序中主要設(shè)定有fxo_ring、fxo_onhook和fxo_offhook這三個狀態(tài)。當(dāng)其處在fxo_offhook狀態(tài)下表明用戶摘機(jī)。當(dāng)其處在fxo_onhook狀態(tài)下驅(qū)動程序就把DAA芯片的引腳拉高,表明用戶掛機(jī)。相應(yīng)的,當(dāng)有控制信息需要輸入時,其檢測DAA芯片的引腳來進(jìn)行判斷,這里同樣要啟動相應(yīng)的定時器,來判斷回路上是否有振鈴電平或何時回路上振鈴信號結(jié)束等信息。當(dāng)程序判斷處在fxo_ring狀態(tài)下,則表明線路上有振鈴信號并做相關(guān)處理。
            (2)DSR控制模塊及接口
            DSR控制模塊及接口主要實現(xiàn)用戶對串行數(shù)據(jù)通信接口HSS以及底層引擎NPE的控制。既與來自上層應(yīng)用程序進(jìn)行信息交互,又為上層應(yīng)用程序和SLIC硬件之間提供控制接口。與一般的設(shè)備驅(qū)動一樣,主要包括DSR_open()、DSR_close()、DSR_read()、DSR_write()和DSR_ioctl()這些函數(shù)。其中DSR_read()和DSR_write()主要負(fù)責(zé)從DSR讀取消息和向DSR寫入消息。DSR_ioctl()主要負(fù)責(zé)控制DSR的相關(guān)配置參數(shù)讀入與讀出和傳遞SLIC控制信息給底層的SLIC控制模塊。參數(shù)包括根據(jù)當(dāng)前所處狀態(tài)判斷后所得出的C1、C2和C3管腳寫入相應(yīng)的電平值、查詢當(dāng)前SLIC的工作狀態(tài)信息、SLIC振鈴信號的產(chǎn)生和停止等。DSR的相關(guān)配置參數(shù)包括DSR中DSP通道數(shù)目、通道編碼器的類型、編解碼器輸出數(shù)據(jù)幀的大小等。
            (3)DSR數(shù)據(jù)模塊
            DSR數(shù)據(jù)模塊主要實現(xiàn)話音數(shù)據(jù)在內(nèi)核與用戶態(tài)之間的交互。包括從內(nèi)核中讀取數(shù)據(jù),向內(nèi)核中發(fā)送數(shù)據(jù)。為了有效把握數(shù)據(jù)傳輸節(jié)奏,需要建立一種內(nèi)部緩存機(jī)制。包括從DSR讀取到數(shù)據(jù)緩存后發(fā)送給用戶態(tài)的應(yīng)用程序和用戶態(tài)的應(yīng)用程序向DSR發(fā)送數(shù)據(jù)的緩存。緩存內(nèi)的數(shù)據(jù)查詢也是每隔一段時間后再進(jìn)行的。但注意緩存不應(yīng)開的過大,以免通話延時的加大。為了消除由于丟包而造成信息不完整的問題,DSR數(shù)據(jù)模塊也建立了相應(yīng)的機(jī)制來控制。
            用戶的應(yīng)用程序主要運(yùn)行在用戶態(tài),針對DSR模塊和上收發(fā)的語音數(shù)據(jù)和控制信令進(jìn)行處理操作。以編程實現(xiàn)直接內(nèi)向呼叫、呼叫轉(zhuǎn)移、呼叫等待和三方呼叫等功能。對于底層通話來說,主要關(guān)心的是處理電話和IP網(wǎng)絡(luò)間的銜接問題,這需要做好如下幾個接口:DSR控制接口、DSR數(shù)據(jù)接口和網(wǎng)絡(luò)接口,以實現(xiàn)語音數(shù)據(jù)收發(fā)、通話信令收發(fā)和DSR控制消息收發(fā)的管理。
            網(wǎng)絡(luò)接口模塊用來接受網(wǎng)絡(luò)上傳遞進(jìn)來的數(shù)據(jù),做出相關(guān)處理后將壓縮的語音數(shù)據(jù)通過DSR數(shù)據(jù)接口傳遞給內(nèi)核處理,同時也負(fù)責(zé)將從DSR數(shù)據(jù)接口傳遞來的壓縮后的語音數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)上。如果從網(wǎng)絡(luò)上傳遞進(jìn)來的數(shù)據(jù)是通話信令,則在做出相關(guān)處理后將具體的控制信息通過DSR控制接口發(fā)送給內(nèi)核,或者根據(jù)底層操作的內(nèi)容把相應(yīng)的信令信息通過網(wǎng)絡(luò)接口發(fā)送到網(wǎng)絡(luò)上。例如,對DSR的相關(guān)控制消息包括打開與關(guān)閉DSR編解碼功能、打開與關(guān)閉在向電話輸出的電話信令音和開啟與關(guān)閉檢測用戶鍵盤撥號等功能。
          2 測試
            為了保證當(dāng)前系統(tǒng)能正確工作,需要對其底層功能進(jìn)行測試。因為編碼壓縮的語音數(shù)據(jù)由實時傳送協(xié)議RTP負(fù)責(zé)傳遞,故主要采用用戶數(shù)據(jù)UDP包的形式接收與發(fā)送。出于這個角度考慮,可以實現(xiàn)將電話手柄的MIC采集的聲音返回至同一電話手柄的聽筒內(nèi)。首先編寫一個小程序來實現(xiàn)將話筒收集的語音數(shù)據(jù)發(fā)送至網(wǎng)絡(luò)上,同時接受來自網(wǎng)絡(luò)的數(shù)據(jù)并還原成模擬話音。假設(shè)網(wǎng)絡(luò)上有一臺IP地址為192.168.0.1的主機(jī)。其運(yùn)行一個UDP數(shù)據(jù)包環(huán)回程序負(fù)責(zé)將網(wǎng)上接收到的UDP數(shù)據(jù)包轉(zhuǎn)發(fā)回源發(fā)送端。開始測試前,先設(shè)定一些必要的控制信息,如對方IP地址和語音編解碼方式等。將網(wǎng)線和話筒線連至網(wǎng)口和RJ11接口,撥通IP地址為192.168.0.1主機(jī)的電話,看看電話手柄的聽筒內(nèi)將能夠聽到話筒MIC所收集的話音。如果話音正確,則表明底層的功能已實現(xiàn)。
            IXP421的網(wǎng)絡(luò)語音方案實現(xiàn)了底層的相關(guān)功能,而上層的應(yīng)用較為靈活,且有很強(qiáng)的擴(kuò)展性,例如實現(xiàn)VPN功能及多媒體業(yè)務(wù),還需要開發(fā)相應(yīng)的軟件,本文并未涉及到。隨著網(wǎng)絡(luò)語音相關(guān)技術(shù)的逐步走向成熟,相信會有越來越多的人因之受益。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          linux相關(guān)文章:linux教程



          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();