短消息电话中数据链路层的控制技术
摘要:系统采用Winbond的W78E58P单片机为控制中心,处理DIMF信号和FSK信号的接收发送、信息显示和存储,并依据CTSI协议与服务器通信。着重论述链路层的控制技术,包括数据控制和电话控制两个方面。该方案具有良好的灵活性、可升级性等特点。
关键词:双音多频(DTMF) 频移键控(FSK) CTSI 链路层 数据包
随着中文短消息的逐步为大家熟知,短消息的使用越来越多,使用量越来越大,应用范围也越来越广。中文短消息正以其特有的快捷和方便,影响人们日常生活的许多方面。但你不没有想过有一天用家里的固定电话来发送中文短消息呢?这样的愿望很快就要实现。中国电信已在北京、上海、广州等城市推出此项业务,相关标准也已经出台,中兴、贝尔等国内大型通信公司推出了支持中文短消息传递的服务器,固网短信已经开始进入百姓生活,短消息电话在今后的一段时间将会有更大的市场。
本文提及的短消息电话是在能接收来电显示的普通电话基础上实现的。本系统主要由DMTF信号接收发送电路、FSK信号接收发送电路、存储器电路、显示LCD电路和微控制器电路组成。通过电话线与支持固定网短消息业务的服务器连接,实现短消息的传输。本文着重从数据链路层探讨有关数据通信的控制技术。
javascript:window.open(this.src);" style="cursor:pointer;"/>
1 系统构成
1.1 系统的硬件组成
短消息电话是指具有短消息发送和接收功能的电话。短消息服务器和短消息电话之间采用半双工通讯方式,通过FSK(频移键控)信号和DTMF(双音多频)信号进行数据传输,采用交互操作方式。短消息电话除了具有普通电话的通话功能外,还有中文显示、信息存储、DTMF信号、FSK信号发送接收等功能。短消息电话的功能框图如图1所示。
各模块的功能如下:CMX605、CMX602模块与电话机电路提供了DTMF和FSK信号的物理通道,实现DTMF和FSK信号的发送和接收及电话的通信功能;W78E58P单片机为控制中心,协调和控制各模块正常工作;SST28SF02存储器用来存储程序代码、用户输入的信息以及短消息中心传送的消息;62256为系统正常运动提供内存;LCD显示器和键盘扫描电路实现人机交互,提供友好操作界面;为了调试方便,增加了与PC串口的接口电路,使得编写的编程可直接到目标机的RAM中运行;此外,PS2接口电路使得用户可以利用PC机键盘进行中英文输入。
1.2 系统的信号流程
短消息系统主要是在话音频率内传送数据消息,下行信号(短消息中心到短消息终端)采用半双工频移键控FSK信号调制方式;上行信号(短消息终端到短消息中心)采用DTMF信号模式或FSK信号调制方式。上行信号采用的方式由当地服务器决定,而DTMF信号模式又分为编码方式和非编码方式,由具体的短消息协议确定。
javascript:window.open(this.src);" style="cursor:pointer;"/>
短消息电话接收短消息建立在来电显示号码是短消息中心号码的基础上;发送短消息是在用户设定了短消息中心号码之后,所发送的信息发送到所设定的短消息中心。通信过程如下:首先建立物理链接通路,然后与交换机建立普通话音通道,接着通过中心号码与短消息中心建立信息通道,短消息中心和短消息终端就可以通过消息包进行交互式通信。
短消息电话与服务器的信息交互都由服务器发送CTSI命令开始,即终端通过解释、执行CTSI命令并回送返回值的方式进行交互。终端不主动发送内容给服务器,即使终端的主动服务申请,也是通过服务器发出服务访问命令后递交的。
2 数据链路层
2.1 数据链路层的功能
数据链路层提供可靠的数据传送,主要是将有噪声的物理信道变成无传输差错的通信通道,提供数据成帧、差错控制和流量控制等。短消息电话中的链路层在电话通信方面,要实现对电话语音通路的控制、电话的来电显示和通话等功能;在数据控制方面,完成数据包的组包和解包,控制终端和短消息中心交互时序,对数据包进行纠错并对出错数据包进行重发处理;在电话机控制方面,解析应用层的命令,实现对物理层的控制以及对数据包的自动接收和存储功能。
javascript:window.open(this.src);" style="cursor:pointer;"/>
2.2 数据链路层的协议
短消息电话中数据链路层采用的差错控制类似于停止等待协议,并采用重发机制保障终端和服务器在偶然的故障后仍有机会保持连接。数据链路层完成了规定次数的重发后仍然出错时,服务器则断开与终端的连接。
数据链路层的上行FSK数据包和下行FSK数据包格式如图2所示,一个链路层FSK数据包包括六部分:同步引导串,由82bit交替的“01”加8bit“1”构成,具体参见CTSI协议,对于短消息电话(终端)本身来说只要读到至少50bit交替出现的“01”以及同步结束字符后,即可以认为同步建立;消息类型,指明信息内容的类型,根据协议规定分为一般类型和特殊类型,终端根据不同的类型进行相应的处理;消息长度,指消息特征号的字节数(=1)加消息层信息内容的字节数;信息特征号,目前仅使用十六进制01一种消息特片号,其余保留以利于拓展新的电信业务;消息层信息内容,由消息层负责解析,包含一条CTSI操作命令,最大长度不大于254字节;校验和,用于数据传送过程中的纠错,取值为该数据包中除同步引导串值外的所有字节的和,按256取模,再取补后得到的值。
由于终端还可以DTMF形式上送数据,因此DTMF数据包又分为:编码格式的DTMF上行命令响应信息包、非编码格式的DTMF上行命令响应信息包和非编码格式的DTMF上行信息包。上行DTMF命令响应消息包(编码方式)是终端对SMC的FSK数据的响应信息包;上行DTMF命令响应信息包(非编码方式)也是终端对SMC的FSK数据的响应信息包,主要采用了非编码方式,此种返回信息包目前只用于信息下载指令中,用于描述指令的解释执行情况,具体内容详见协议;上行DMTF上行信息包(非编码方式)是终端对SMC的指令响应,具体的信令如表1所示。
表1 数据链路层上行DTMF上行信令包的格式
名 称 | 作 用 | 组 成 | 含 义 |
CAS的ACK | 设备响应 | DTMF'A' | 当终端收到CAS音后,发DTMF'A'音,表示确认 |
FSK包的ACK | 数据纠错 | DTMF'D1' | 数据传送正确 |
DTMF'D0' | 数据传送错误 |
2.3 数据链路层的电话功能
短消息电话的链路层要实现电话功能,因此基本的电话功能都由链路层和物理处理,主要分为:来电显示功能、短消息数据包的接收、连接到服务器、基本的电话通话功能和按键拨号功能。同时要配合电话不同功能的界面显示。
来电显示功能和短消息数据包的接收都是对FSK数据包的解析,两者的不同之处在于具体的数据格式:来电显示数据是在第一声和第二声振铃之间传过来的FSK数据,而短消息数据包是在建立了短消息通信通道后在线路上传输的FSK数据包。这里主要针对符合Bell202标准的FSK来电显示信号进行阐述。FSK来电显示信号数据包有两种格式:单制式信息包括日期、时间、电话号码、姓名。在第一声与第二声振铃之间将数据包解析,并将日期、时间、电话号码等信息在LCD上显示,实现来电显示功能。
连接到服务器,由软件控制电话机摘机、拨号到服务器,服务器机响应拨号,建立物理通道的连接。当服务器摘机并发出回应信号CAS音,在规定时间内终端回应DTMF的“A”信号,与服务器建立数据通路,进行数据包交互通信。然后解析服务器的数据,执行服务器下行的指令,与用户进行交互。
基本的电话通话功能和按键拨号功能是一部电话必须具备的功能,主要由电路硬件完成。链路层主要控制液晶显示与之相配合的操作界面。当用电话拨号时,屏幕弱出电话拨号界面,有按键按下时控制发送和相应的DTMF音,同时在屏幕上显示按下的按键值。在电话处于通话状态时,屏幕显示相应的界面,提示用户通话时间及拨入或拨出电话的号码等信息。
3 数据链路层中的控制技术
3.1 数据链路层的数据控制技术javascript:window.open(this.src);" style="cursor:pointer;"/>
数据链路层的数据分为上行和下行数据,本系统中将其分开处理,上行数据在主函数中循环调用处理,而下行数据在中断中处理。
上行数据包处理流程图如图3所法。对数据的处理是在主函数中,因此可有适当的等待和延迟,但必须在协议规定的时间内完成对数据包的处理,它对时间的要求不如中断对时间要求那么苛刻。因为上传数据包的过程是终端主动上载数据信息,链路层对数据包的多少十分清楚,而且在服务器接收到数据包后,肯定应答数据说明数据包传输是否正确,而服务器应答数据包是下行数据在中断中处理。因此,在上传一个数据包后可以等待服务器的应答信号,以确定是否要重发当前数据包。整个处理过程主要应当处理好与中断服务程序的配合,以及用户界面的操作,控制相对比较简单。
下行数据包处理流程如图4所示,处理过程比较复杂。由于服务器随时都有呼叫终端的可能性,使得下行数据传输具有随机性。因此这种情况最适于在中断中进行处理。中断处理又有其自身的特点,如中断函数不能进行参数传递并且没有返回值;中断函数中调用其他函数时,被调用函数所使用的寄存器组必须与中断函数相同等。这就决定了中断函数中的处理技术与主函数中的处理技术相比受到了很大的限制。中断函数首先对链路层各个状态下的超时定时器进行处理,当有定时器超时时,根据协议规定进行相应的超时处理,通常的处理是控制终端挂机;数据包处理过程中,与物理层建立循环队列缓冲区,每10毫秒中断时从缓冲区中取数据,如果缓冲区中有数据则连续地取出数据直到队列中的数据取完,而当循环队列缓冲区没有数据时,则直接退出中断,等待下次中断再进行取数据处理;按协议规定方式从物理层中取出完整数据包后,通过校验和对数据包进行校验,如果数据包传输不正确,则向服务器应答“D0”,请求服务器重发,当数据包传输正确时,则向服务器应答“D1”,发完应答数据后将终端置于接收数据状态并启动重发超时定时器。中断处理数据过程中,要与主函数进行配合在液晶屏上显示用户提示信息。另外在中断函数中最好不进行液晶以及FLASH存储器的操作,因类容易导致函数的双重调用,这是由中断处理的自身特点决定的。
3.2 数据链路层的电话功能控制技术
短消息电话中数据链路层的控制技术包括对各种电话功能的控制,例如按键、摘机、挂机、重拨、免提等电话功能的软件功能都在链路层实现。由于电话功能的控制不是本文的论述重点,在此仅以摘机拨打电话过程为例。在挂机状态下,当链路层检测到摘机信号时,链路层控制液晶显示拨出电话界面,然后在中断中检测按键并将按键值以DTMF信号发送到交换机,同时界面显示用户按下的按键值。而话音信号处理主要由物理电路和交换机来完成,当检测到挂机信号时,链路层控制终端进行软件挂机,对使用时的变量进行初始化,回到挂机状态,完成了电话的拨号、通话和挂机的过程。其它的电话功能主要根据实际操作中的需要进行相应的处理,包括链路层中对FLASH存储器的操作这些过程,主要注意与其他程序模块的配合以及符合实际处理的需求。
此方案的短消息电话在实际中证明是可行的,已经在南京、上海、深圳等地与当地的短消息服务器进行调试,调试结果证明工作正常。另外,此方案使用的外围器件还比较多,如果采用针对短消息电话开发的专用芯片可以大大简化外围器件,节约生产成本。整个开发过程采用C语言,将整个工程移植到其他的硬件,只需要替换工程中硬件的驱动程序即可。开发过程中,采用软硬件开发同步进行,在PC机上搭建软件仿真环境,软件开发可以不需要完全依赖硬件开发的进度,大大缩短了开发周期,且有利于多人合作。