短消息電話中數(shù)據(jù)鏈路層的控制技術(shù)
本文提及的短消息電話是在能接收來電顯示的普通電話基礎(chǔ)上實現(xiàn)的。本系統(tǒng)主要由DMTF信號接收發(fā)送電路、FSK信號接收發(fā)送電路、存儲器電路、顯示LCD電路和微控制器電路組成。通過電話線與支持固定網(wǎng)短消息業(yè)務(wù)的服務(wù)器連接,實現(xiàn)短消息的傳輸。本文著重從數(shù)據(jù)鏈路層探討有關(guān)數(shù)據(jù)通信的控制技術(shù)。
1 系統(tǒng)構(gòu)成
1.1 系統(tǒng)的硬件組成
短消息電話是指具有短消息發(fā)送和接收功能的電話。短消息服務(wù)器和短消息電話之間采用半雙工通訊方式,通過FSK(頻移鍵控)信號和DTMF(雙音多頻)信號進行數(shù)據(jù)傳輸,采用交互操作方式。短消息電話除了具有普通電話的通話功能外,還有中文顯示、信息存儲、DTMF信號、FSK信號發(fā)送接收等功能。短消息電話的功能框圖如圖1所示。
各模塊的功能如下:CMX605、CMX602模塊與電話機電路提供了DTMF和FSK信號的物理通道,實現(xiàn)DTMF和FSK信號的發(fā)送和接收及電話的通信功能;W78E58P單片機為控制中心,協(xié)調(diào)和控制各模塊正常工作;SST28SF02存儲器用來存儲程序代碼、用戶輸入的信息以及短消息中心傳送的消息;62256為系統(tǒng)正常運動提供內(nèi)存;LCD顯示器和鍵盤掃描電路實現(xiàn)人機交互,提供友好操作界面;為了調(diào)試方便,增加了與PC串口的接口電路,使得編寫的編程可直接到目標機的RAM中運行;此外,PS2接口電路使得用戶可以利用PC機鍵盤進行中英文輸入。
1.2 系統(tǒng)的信號流程
短消息系統(tǒng)主要是在話音頻率內(nèi)傳送數(shù)據(jù)消息,下行信號(短消息中心到短消息終端)采用半雙工頻移鍵控FSK信號調(diào)制方式;上行信號(短消息終端到短消息中心)采用DTMF信號模式或FSK信號調(diào)制方式。上行信號采用的方式由當(dāng)?shù)胤?wù)器決定,而DTMF信號模式又分為編碼方式和非編碼方式,由具體的短消息協(xié)議確定。
短消息電話接收短消息建立在來電顯示號碼是短消息中心號碼的基礎(chǔ)上;發(fā)送短消息是在用戶設(shè)定了短消息中心號碼之后,所發(fā)送的信息發(fā)送到所設(shè)定的短消息中心。通信過程如下:首先建立物理鏈接通路,然后與交換機建立普通話音通道,接著通過中心號碼與短消息中心建立信息通道,短消息中心和短消息終端就可以通過消息包進行交互式通信。
短消息電話與服務(wù)器的信息交互都由服務(wù)器發(fā)送CTSI命令開始,即終端通過解釋、執(zhí)行CTSI命令并回送返回值的方式進行交互。終端不主動發(fā)送內(nèi)容給服務(wù)器,即使終端的主動服務(wù)申請,也是通過服務(wù)器發(fā)出服務(wù)訪問命令后遞交的。
2 數(shù)據(jù)鏈路層
2.1 數(shù)據(jù)鏈路層的功能
數(shù)據(jù)鏈路層提供可靠的數(shù)據(jù)傳送,主要是將有噪聲的物理信道變成無傳輸差錯的通信通道,提供數(shù)據(jù)成幀、差錯控制和流量控制等。短消息電話中的鏈路層在電話通信方面,要實現(xiàn)對電話語音通路的控制、電話的來電顯示和通話等功能;在數(shù)據(jù)控制方面,完成數(shù)據(jù)包的組包和解包,控制終端和短消息中心交互時序,對數(shù)據(jù)包進行糾錯并對出錯數(shù)據(jù)包進行重發(fā)處理;在電話機控制方面,解析應(yīng)用層的命令,實現(xiàn)對物理層的控制以及對數(shù)據(jù)包的自動接收和存儲功能。
2.2 數(shù)據(jù)鏈路層的協(xié)議
短消息電話中數(shù)據(jù)鏈路層采用的差錯控制類似于停止等待協(xié)議,并采用重發(fā)機制保障終端和服務(wù)器在偶然的故障后仍有機會保持連接。數(shù)據(jù)鏈路層完成了規(guī)定次數(shù)的重發(fā)后仍然出錯時,服務(wù)器則斷開與終端的連接。
數(shù)據(jù)鏈路層的上行FSK數(shù)據(jù)包和下行FSK數(shù)據(jù)包格式如圖2所示,一個鏈路層FSK數(shù)據(jù)包包括六部分:同步引導(dǎo)串,由82bit交替的“01”加8bit“1”構(gòu)成,具體參見CTSI協(xié)議,對于短消息電話(終端)本身來說只要讀到至少50bit交替出現(xiàn)的“01”以及同步結(jié)束字符后,即可以認為同步建立;消息類型,指明信息內(nèi)容的類型,根據(jù)協(xié)議規(guī)定分為一般類型和特殊類型,終端根據(jù)不同的類型進行相應(yīng)的處理;消息長度,指消息特征號的字節(jié)數(shù)(=1)加消息層信息內(nèi)容的字節(jié)數(shù);信息特征號,目前僅使用十六進制01一種消息特片號,其余保留以利于拓展新的電信業(yè)務(wù);消息層信息內(nèi)容,由消息層負責(zé)解析,包含一條CTSI操作命令,最大長度不大于254字節(jié);校驗和,用于數(shù)據(jù)傳送過程中的糾錯,取值為該數(shù)據(jù)包中除同步引導(dǎo)串值外的所有字節(jié)的和,按256取模,再取補后得到的值。
由于終端還可以DTMF形式上送數(shù)據(jù),因此DTMF數(shù)據(jù)包又分為:編碼格式的DTMF上行命令響應(yīng)信息包、非編碼格式的DTMF上行命令響應(yīng)信息包和非編碼格式的DTMF上行信息包。上行DTMF命令響應(yīng)消息包(編碼方式)是終端對SMC的FSK數(shù)據(jù)的響應(yīng)信息包;上行DTMF命令響應(yīng)信息包(非編碼方式)也是終端對SMC的FSK數(shù)據(jù)的響應(yīng)信息包,主要采用了非編碼方式,此種返回信息包目前只用于信息下載指令中,用于描述指令的解釋執(zhí)行情況,具體內(nèi)容詳見協(xié)議;上行DMTF上行信息包(非編碼方式)是終端對SMC的指令響應(yīng),具體的信令如表1所示。
表1 數(shù)據(jù)鏈路層上行DTMF上行信令包的格式
2.3 數(shù)據(jù)鏈路層的電話功能
短消息電話的鏈路層要實現(xiàn)電話功能,因此基本的電話功能都由鏈路層和物理處理,主要分為:來電顯示功能、短消息數(shù)據(jù)包的接收、連接到服務(wù)器、基本的電話通話功能和按鍵撥號功能。同時要配合電話不同功能的界面顯示。
來電顯示功能和短消息數(shù)據(jù)包的接收都是對FSK數(shù)據(jù)包的解析,兩者的不同之處在于具體的數(shù)據(jù)格式:來電顯示數(shù)據(jù)是在第一聲和第二聲振鈴之間傳過來的FSK數(shù)據(jù),而短消息數(shù)據(jù)包是在建立了短消息通信通道后在線路上傳輸?shù)腇SK數(shù)據(jù)包。這里主要針對符合Bell202標準的FSK來電顯示信號進行闡述。FSK來電顯示信號數(shù)據(jù)包有兩種格式:單制式信息包括日期、時間、電話號碼、姓名。在第一聲與第二聲振鈴之間將數(shù)據(jù)包解析,并將日期、時間、電話號碼等信息在LCD上顯示,實現(xiàn)來電顯示功能。
連接到服務(wù)器,由軟件控制電話機摘機、撥號到服務(wù)器,服務(wù)器機響應(yīng)撥號,建立物理通道的連接。當(dāng)服務(wù)器摘機并發(fā)出回應(yīng)信號CAS音,在規(guī)定時間內(nèi)終端回應(yīng)DTMF的“A”信號,與服務(wù)器建立數(shù)據(jù)通路,進行數(shù)據(jù)包交互通信。然后解析服務(wù)器的數(shù)據(jù),執(zhí)行服務(wù)器下行的指令,與用戶進行交互。
基本的電話通話功能和按鍵撥號功能是一部電話必須具備的功能,主要由電路硬件完成。鏈路層主要控制液晶顯示與之相配合的操作界面。當(dāng)用電話撥號時,屏幕弱出電話撥號界面,有按鍵按下時控制發(fā)送和相應(yīng)的DTMF音,同時在屏幕上顯示按下的按鍵值。在電話處于通話狀態(tài)時,屏幕顯示相應(yīng)的界面,提示用戶通話時間及撥入或撥出電話的號碼等信息。
3 數(shù)據(jù)鏈路層中的控制技術(shù)
3.1 數(shù)據(jù)鏈路層的數(shù)據(jù)控制技術(shù)
數(shù)據(jù)鏈路層的數(shù)據(jù)分為上行和下行數(shù)據(jù),本系統(tǒng)中將其分開處理,上行數(shù)據(jù)在主函數(shù)中循環(huán)調(diào)用處理,而下行數(shù)據(jù)在中斷中處理。
上行數(shù)據(jù)包處理流程圖如圖3所法。對數(shù)據(jù)的處理是在主函數(shù)中,因此可有適當(dāng)?shù)牡却脱舆t,但必須在協(xié)議規(guī)定的時間內(nèi)完成對數(shù)據(jù)包的處理,它對時間的要求不如中斷對時間要求那么苛刻。因為上傳數(shù)據(jù)包的過程是終端主動上載數(shù)據(jù)信息,鏈路層對數(shù)據(jù)包的多少十分清楚,而且在服務(wù)器接收到數(shù)據(jù)包后,肯定應(yīng)答數(shù)據(jù)說明數(shù)據(jù)包傳輸是否正確,而服務(wù)器應(yīng)答數(shù)據(jù)包是下行數(shù)據(jù)在中斷中處理。因此,在上傳一個數(shù)據(jù)包后可以等待服務(wù)器的應(yīng)答信號,以確定是否要重發(fā)當(dāng)前數(shù)據(jù)包。整個處理過程主要應(yīng)當(dāng)處理好與中斷服務(wù)程序的配合,以及用戶界面的操作,控制相對比較簡單。
下行數(shù)據(jù)包處理流程如圖4所示,處理過程比較復(fù)雜。由于服務(wù)器隨時都有呼叫終端的可能性,使得下行數(shù)據(jù)傳輸具有隨機性。因此這種情況最適于在中斷中進行處理。中斷處理又有其自身的特點,如中斷函數(shù)不能進行參數(shù)傳遞并且沒有返回值;中斷函數(shù)中調(diào)用其他函數(shù)時,被調(diào)用函數(shù)所使用的寄存器組必須與中斷函數(shù)相同等。這就決定了中斷函數(shù)中的處理技術(shù)與主函數(shù)中的處理技術(shù)相比受到了很大的限制。中斷函數(shù)首先對鏈路層各個狀態(tài)下的超時定時器進行處理,當(dāng)有定時器超時時,根據(jù)協(xié)議規(guī)定進行相應(yīng)的超時處理,通常的處理是控制終端掛機;數(shù)據(jù)包處理過程中,與物理層建立循環(huán)隊列緩沖區(qū),每10毫秒中斷時從緩沖區(qū)中取數(shù)據(jù),如果緩沖區(qū)中有數(shù)據(jù)則連續(xù)地取出數(shù)據(jù)直到隊列中的數(shù)據(jù)取完,而當(dāng)循環(huán)隊列緩沖區(qū)沒有數(shù)據(jù)時,則直接退出中斷,等待下次中斷再進行取數(shù)據(jù)處理;按協(xié)議規(guī)定方式從物理層中取出完整數(shù)據(jù)包后,通過校驗和對數(shù)據(jù)包進行校驗,如果數(shù)據(jù)包傳輸不正確,則向服務(wù)器應(yīng)答“D0”,請求服務(wù)器重發(fā),當(dāng)數(shù)據(jù)包傳輸正確時,則向服務(wù)器應(yīng)答“D1”,發(fā)完應(yīng)答數(shù)據(jù)后將終端置于接收數(shù)據(jù)狀態(tài)并啟動重發(fā)超時定時器。中斷處理數(shù)據(jù)過程中,要與主函數(shù)進行配合在液晶屏上顯示用戶提示信息。另外在中斷函數(shù)中最好不進行液晶以及FLASH存儲器的操作,因類容易導(dǎo)致函數(shù)的雙重調(diào)用,這是由中斷處理的自身特點決定的。
3.2 數(shù)據(jù)鏈路層的電話功能控制技術(shù)
短消息電話中數(shù)據(jù)鏈路層的控制技術(shù)包括對各種電話功能的控制,例如按鍵、摘機、掛機、重撥、免提等電話功能的軟件功能都在鏈路層實現(xiàn)。由于電話功能的控制不是本文的論述重點,在此僅以摘機撥打電話過程為例。在掛機狀態(tài)下,當(dāng)鏈路層檢測到摘機信號時,鏈路層控制液晶顯示撥出電話界面,然后在中斷中檢測按鍵并將按鍵值以DTMF信號發(fā)送到交換機,同時界面顯示用戶按下的按鍵值。而話音信號處理主要由物理電路和交換機來完成,當(dāng)檢測到掛機信號時,鏈路層控制終端進行軟件掛機,對使用時的變量進行初始化,回到掛機狀態(tài),完成了電話的撥號、通話和掛機的過程。其它的電話功能主要根據(jù)實際操作中的需要進行相應(yīng)的處理,包括鏈路層中對FLASH存儲器的操作這些過程,主要注意與其他程序模塊的配合以及符合實際處理的需求。
此方案的短消息電話在實際中證明是可行的,已經(jīng)在南京、上海、深圳等地與當(dāng)?shù)氐亩滔⒎?wù)器進行調(diào)試,調(diào)試結(jié)果證明工作正常。另外,此方案使用的外圍器件還比較多,如果采用針對短消息電話開發(fā)的專用芯片可以大大簡化外圍器件,節(jié)約生產(chǎn)成本。整個開發(fā)過程采用C語言,將整個工程移植到其他的硬件,只需要替換工程中硬件的驅(qū)動程序即可。開發(fā)過程中,采用軟硬件開發(fā)同步進行,在PC機上搭建軟件仿真環(huán)境,軟件開發(fā)可以不需要完全依賴硬件開發(fā)的進度,大大縮短了開發(fā)周期,且有利于多人合作。
評論