<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

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

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

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

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



上一頁(yè) 1 2 3 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>