您好, 访客   登录/注册

融合通信中双模话机软件功能模块的设计

来源:用户上传      作者: 葛 俊 裴文江

  摘要: 随着通信技术的发展,人们对话机通话的功能需求越来越高,而基于嵌入式实现的PSTN/VoIP双模话机能够灵活的处理话机的基本功能和增值功能。本文在介绍该双模话机实现架构的同时,着重讨论了在架构中处于核心地位的软件功能控制模块的组成和实现。并结合实例,分析了模块的实现过程机理和软件层的函数接口。
  关键词: 双模话机;控制模块;嵌入式系统
  
  随着网络技术和个人计算机平台的发展,人们对通信中的数据多媒体处理和相关的增值服务,要求越来越高。其中,VoIP(Voice Over IP)技术提供了一种基于IP的通信方式[1]。
  为了适应市场的需求,一种以用嵌入式的技术实现PSTN与VoIP通话功能为主,在此基础上实现多媒体的良好数据处理和灵活的增值服务功能的双模话机方案便应运而生。
  本文介绍这种方案的实现原理的基础上,分析了其中的软件核心控制模块的实现机理,并以已实现的功能来阐述方案的优势。
  
  1 双模话机的实现原理
  
  双模话机主要实现传统PSTN的电话功能和VoIP的语音通话功能。为了追求简便高效的设计,采取如下的设计方案。
  话机实现硬件为ARM7处理器,以uCLinux为操作系统[2]。操作系统之上使用了自行设计的应用软件保证了通话和增值功能的实现。
  话机状态的切换和对硬件事件的响应控制,主要在应用层实现。在应用层主要分成如下的模块:控制模块、短消息模块、通话模块、闹铃模块、历史记录模块、空闲模块、来电接听模块、以及网络模块。
  这些模块中最重要的是控制模块,负责对消息的控制和模块之间的总控和切换,是整个双模话机调度的核心。下面就介绍控制模块(CCM模块)。
  
  
  2控制模块的实现框架
  
  CCM模块为控制模块,它不断的获取事件消息,并根据消息种类和当前实际活动的功能模块,分配给相应的功能模块并调用相应功能模块的函数来处理响应的消息[3]。
  2.1 功能模块的划分
  话机不同功能和状态之间的切换,是通过对事件的响应来实现的。CCM接受到不同的消息,根据消息的种类,将消息分发给子功能模块,由子模块处理该消息,处理完毕后,返回CCM模块。
  各模块之间的协作过程,可由图2所示。
  
  各模块都有相应的处理函数,而CCM处于核心的地位,当话机接收到消息或状态发生转变时,话机会将切换至相应的功能模块,由相应功能模块处理。
  2.2 消息的种类
  在本软件系统中,采用常用的消息响应机制设计模式。即按照设计需要,在整个话机的软件设计中,含有如下的消息种类:INCOMING、DIALING、KEYBOARD、NET、TIMER、CLOCK、SMS等。各种发生的事件会产生消息,导致话机状态的切换,由控制模块中的函数来处理不同的事件消息。
  2.3 控制模块的实现
  控制模块首先调用函数完成自身的初始化,此后控制模块从存储消息的消息队列中,获取消息并进行处理,并将消息分发至不同的功能模块。控制模块需要其他模块来协助话机功能的实现。
  2.3.1 控制模块的初始化过程
  双模话机系统启动的过程中,最早调用的模块的即是控制模块(CCM),因为话机需要显示初始界面,以及对必要的数据存储空间进行初始化。因此CCM最初会自行切换到IDLE模块。
  该函数将当前的状态切换到了IDLE状态,并将状态切换至IDLE功能处理模块。并将话机的摘机和免提状态切换的初始化状态。该子模块完成后,话机初始化完毕处于空闲状态,等待消息的到来。
  2.3.2 消息轮询子函数模块
  模块之间的行为控制以及不同模块之间的切换是通过“响应消息”的机制来实现的。每当产生消息,消息会被存储消息队列中。
  消息队列是一个先入先出的队列,在程序中有专门的消息体资源池,该资源的获取和释放均通过专有的API进行操作和管理。
  CCM的消息轮询函数,不断地从已存消息事件的队列中将消息取出来,并由此时处于运行状态的子模块来处理该消息,处理完毕后,子模块将该消息事件清除,并将控制权重新交给CCM模块。
  2.3.3 事件消息处理的分配与模块的切换
  CCM对消息的处理与分配给子模块的过程可由图3所示。CCM取出消息队列队头的事件消息后,会将该事件消息传递给当前正在活动的功能模块。例如此时处于活动的模块为历史记录模块,这时就会调用历史记录模块的处理函数,对该事件进行处理。
  
  
  3双模话机运行测试
  
  本文所描述的是一个结合PSTN应用与VoIP技术的双模话机终端的开发过程。产品的主要功能是实现终端与PC机上常用的软电话的互联互通以及附带强大的电话本功能。对该产品测试重点在于其是否能打通PSTN电话、并且是否能与IP端进行正常通信。
  通过对Incoming事件和Talking事件的处理,双模话机可以实现通话的基本功能,同时在通信过程中,各功能模块如History、SMS模块也能做到实时的响应,基本满足了之前设计的要求。
  
  4结束语
  
  本文主要介绍了基于ARM嵌入式的双模话机的实现,该话机具备传统PSTN电话和VoIP电话的功能,文章着重介绍了核心控制模块――CCM的实现框架和工作流程原理,通过对控制模块和其余功能模块之间的联系与切换,阐述了整个话机的软件应用层的状态流程。最后通过测试,证明该实现该方案实现无误,可以在ARM上实现双模话机的功能。
  
  参考文献:
  [[1]肖振华,徐玉斌,解辉.基于嵌入式Linux 2.6实时优化[J].计算机技术与发展.2008,18(11):83-90.
  [2]刘文峰,李程远,李善平.嵌入式Linux操作系统的研究[J].浙江大学学报:工学版,2004,38(4):447-452.
  [3]徐炽,张闻芳.基于SIP协议的VOIP系统设计与实现[J].科学技术与工程.2008,8(10):2589-2592.
  
  作者简历:
  葛俊,1984年,男,硕士研究生,研究方向:嵌入式通信技术;裴文江,男,教授,博士生导师


转载注明来源:https://www.xzbu.com/2/view-427397.htm