chapter7_电信软件设计举例_第1页
chapter7_电信软件设计举例_第2页
chapter7_电信软件设计举例_第3页
chapter7_电信软件设计举例_第4页
chapter7_电信软件设计举例_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Chapter7 电信软件设计举例Outline 运用SDL来设计通信软件系统 7.5 仿真验证仿真验证 7.4 进程设计进程设计 7.3 功能块设计功能块设计 7.2 系统图设计系统图设计 7.1 包定义包定义 7.0 设计概要设计概要 以Chapter4.6为基础,增加呼叫转移功能设计概要 7.0微型电话交换机硬件结构示意图音信号交换网络主控CPU收号器用户电路收号器用户电路0127最多连接128个用户每个用户电路配有一个双音多频收号器不考虑出入局呼叫用户电路直接接入交换网设计概要 7.0l 系统特点: 本交换机提供基本的呼叫处理功能和部分补充业务 用户电话号码采用四位编码,0到127号用

2、户分别对应电话号码3000到3127设计概要 7.0l 软件结构: 分为两层:应用层和接口层 接口层负责与硬件有关部分的工作 用户摘挂机检测 DTMF收号 音信号连接和释放 振铃控制 话路连接和释放 应用层负责与硬件无关部分的工作 号码分析,确定本次呼叫类型 地址翻译,确定被叫用户逻辑编号(用户逻辑编号与物理地址的对应关系由接口层负责维护) 用户状态管理,建立用户状态表,记录用户状态 呼叫处理,负责呼叫接续过程连接建立阶段和连接释放阶段的工作 包定义 7.1包定义举例package sig_def1(1)syntype dev_no = integer constants 0:127endsy

3、ntype dev_no;syntype dial_no = integer constants 0:9,11,12endsyntype dial_no;signal off_hook(dev_no), on_hook(dev_no), digit(dev_no,dial_no);signal dial_tone_on(dev_no), ringback_tone_on(dev_no), busy_tone_on(dev_no), null_tone_on(dev_no), tone_off(dev_no), ringing_on(dev_no), ringing_off(dev_no), c

4、onnect(dev_no, dev_no), disconnect(dev_no, dev_no)signallist from_env = off_hook, on_hook, digit;signallist to_env1 = dial_tone_on, ringback_tone_on, busy_tone_on, null_tone_on, tone_off, connect, disconnect;signallist to_env2 = ringing_on, ringing_off;synonym Sec duration = external;信号定义信号列表定义同义类型定

5、义同义词定义 系统图设计 7.2use sig_def;system mini_switch1(1)call_handleenv_in(from_env)to_env(to_env1),(to_env2)软件系统图 引用包sig_def系统包含一个功能块l 本系统只考虑应用层的软件设计。 l 本交换机功能比较简单,可以只用一个功能块来实现应用层的功能。l 把接口层视为SDL系统的环境,这样,交换机的应用层被设计成一个SDL系统,该系统只包含一个功能块。 设计思路 7.3.1l 本功能块功能比较单一,不需要再划分子功能块,直接定义进程就可以了。l 在分层结构中,一般在每层设置一个接口,用来接收下

6、一层发送上来的消息并负责消息分发。l 在交换机中,一般需要一个进程来管理和维护用户数据,这个进程一般是静态创建的。l 根据前面的考虑,在本功能块中定义一个管理进程(manage),负责接收和分发消息,同时提供一些公共功能,包括管理和维护用户数据、号码分析、地址翻译等。该进程应该是静态创建的。 设计思路 7.3.1l 呼叫处理方案:l 方案一:定义一个用户进程集,负责呼叫处理全过程,包括主叫和被叫两部分。这种方案可以减少呼叫双方的消息交互,但处理相对复杂一些。l 方案二:分别定义主叫进程集和被叫进程集,分别处理主叫侧事件和被叫侧事件。这种方案的优点是处理相对简单,缺点是会增加一点通信开销。l 实

7、际中我们常常采用第二种方案。主叫进程集和被叫进程集都采用动态创建方式,由管理进程来负责创建。 功能块图 7.3.2block Call_handle1(2)manage(1, 1)called(0, 127)caller(0, 128)env_syssys_envcr_mngto_mng(from_env)cd_mngoff_hook, on_hook,cr_cdcr_envcd_env(to_env1) (to_env2),busy_tone_on,tone_offsignal seizure_req(dev_no), seizure_ind( pid), reject, seizure_c

8、onf, answer, release;signallist btoa = seizure_conf, answer, release;seizure_reqrejectseizure_ind (btoa)release进程间需要增加的消息(信号)(from_env), 功能块图 7.3.2l 需要定义的公共过程(远端过程):号码分析过程dgt_ana,参数:一位号码; 返回值, 0:正常呼叫; 1:设置补充业务 2:取消补充业务; 3:空号地址翻译过程numtodev,输入参数:四位号码(数组); 输出参数:用户设备号 返回值,TRUE:正常号码;FALSE:空号 用户置闲过程set_id

9、le,参数:用户设备号; 功能块图 7.3.2block Call_handle2(2)remote procedure dgt_ana;FPAR in dial_no;RETURNS ana_rslt;remote procedure numtodev;FPAR in num,in/out devno;RETURNS boolean; newtype num array(idx4, dial_no)endnewtype;syntype idx4 = integer constants 0:3entsyntype;remote procedure set_idle;FPAR in dev_no

10、 功能块图 7.3.2进程间消息交互情况(part1)msc call_handlemanageoff_hookcallercalleddial_tone_ondigitdigittone_offdigitdigitdigitdigitseizure_reqseizure_indringing_onsiezure_confringback_tone_on1(2)dev_nodev_no 功能块图 7.3.2进程间消息交互情况(part2)msc call_handle2(2)manageoff_hookcallercalledanswerringing_offconnecttone_offof

11、f_hookon_hookon_hookreleasebusy_tone_onon_hookon_hooktone_offon_hookon_hookreleasebusy_tone_onon_hookon_hooktone_offalt管理进程设计 7.4.1l 管理进程完成以下功能: 收到摘机(off_hook)消息,判断用户是否空闲,是,则创建主叫进程;否则向被叫进程转发摘机消息。 收到主叫进程发出的占用请求消息(seizure_req),判断被叫用户是否空闲,是,则创建被叫进程,向被叫进程转发占用指示消息(seizure_ind);否则向主叫进程回占用拒绝消息(reject)。 收到挂

12、机(on_hook)和号码(digit)消息,向主叫/被叫进程转发。 管理和维护用户数据(主要是用户状态)。 提供号码分析功能和地址翻译功能。 管理和维护用户设备号与主被叫进程实例的对应关系。管理进程设计 7.4.1process manage1(8)newtype line_to_pid array(dev_no, pid)endnewtype line_to_pid;newtype line_str struct line_status l_status; phone_num integer; line_no dev_no; ns_type new_s_type; diversion_no

13、 dev_no;endnewtype line_str; newtype line_data array(dev_no, line_str)endnewtype line_data;管理进程设计 process manage2(8)dcl ltopid line_to_pid;dcl ldata line_data;dcl lineno dev_no, code dial_no, crpid pid;Newtype l_status literals S_IDLE,S_BUSYendnewtype;Newtype new_s_type literals NO_NEW_S,DIVERSION_C

14、, NO_ANSWER,WHEN_BUSYendnewtype;管理进程设计 process manage3(8)exportedset_idleexportednumtodevexporteddgt_anainit管理进程设计 process manage4(8)initready管理进程设计 process manage5(8)readyoff_hook(lineno)ldata(lineno)!line_statuscaller(lineno)ltopid(lineno):= offspring;Ldata(lineno)!line_status:=S_BUSY-(S_IDLE)off_

15、hook(lineno)to ltopid(lineno)-else图5(8)给出了管理进程对off_hook信号的处理流程管理进程设计 process manage6(8)readyon_hook(lineno)on_hook(lineno)to ltopid(lineno)-ltopid(lineno) = NULLfalsetrue管理进程设计 process manage7(8)readyseizure_req(lineno)ldata(lineno)!line_statuscalled(lineno)ltopid(lineno):= offspring;ldata(lineno)!l

16、ine_status:=S_BUSY;Crpid:=sender-(S_IDLE)reject to sender-seizure_ind(crpid)to offspringelse管理进程对占用请求信号的处理流程管理进程设计 process manage8(8)readydigit(lineno, code)digit(lineno,code)to ltopid(lineno)-ltopid(lineno) = NULLfalsetrue主叫进程设计 7.4.2l 主叫进程主要完成以下功能:接收用户号码,分析呼叫类型,确定被叫用户,与被叫建立连接;向用户送各种信号音;用户挂机后释放连接。l

17、 定义一个数组来接收用户所拨号码,定义一个变量来记录已收号码位数。l 在主叫进程中,需要记录的内容有:主叫用户设备号、被叫用户设备号、被叫进程实例的pid等。 n状态状态o空闲状态(空闲状态(idle),主叫进程的初始状态),主叫进程的初始状态o拨号音状态(拨号音状态(dial_tone),用户听到拨号音,),用户听到拨号音,开始输入号码开始输入号码o收号状态(收号状态(recv_dgt),用户继续输入号码),用户继续输入号码o占用状态(占用状态(seizure),等待被叫进程的响应),等待被叫进程的响应o回铃音状态(回铃音状态(ring_tone),主叫用户听回铃),主叫用户听回铃音,等待被

18、叫用户摘机音,等待被叫用户摘机l通话状态(通话状态(connected),主叫和被叫用户开始通),主叫和被叫用户开始通话话l忙音状态(忙音状态(busy_tone),主叫用户听到忙音,应),主叫用户听到忙音,应挂机挂机l空号音状态(空号音状态(null_tone),主叫用户听到空号音,),主叫用户听到空号音,表示拨错号码,应该挂机表示拨错号码,应该挂机l延时释放状态(延时释放状态(delay_rls),主叫用户已挂机,但),主叫用户已挂机,但之前已向管理进程发出占用被叫消息,如果占用成之前已向管理进程发出占用被叫消息,如果占用成功,需释放被叫进程功,需释放被叫进程 n定时器定时器 To拨号音状

19、态,监视主叫拨第一位号,间隔拨号音状态,监视主叫拨第一位号,间隔10s;超时送忙;超时送忙音音o收号状态,监视主叫拨号,间隔收号状态,监视主叫拨号,间隔20s;超时送忙音;超时送忙音o占用状态,监视被叫进程发来的占用证实信号或拒绝信号,占用状态,监视被叫进程发来的占用证实信号或拒绝信号,间隔间隔1s;超时送忙音;超时送忙音o回铃音状态,监视被叫发来的应答信号,间隔回铃音状态,监视被叫发来的应答信号,间隔60s;超时;超时送忙音送忙音o空号音状态,监视主叫挂机,间隔空号音状态,监视主叫挂机,间隔40s;超时送忙音;超时送忙音o忙音状态,监视主叫挂机,间隔忙音状态,监视主叫挂机,间隔40s;超时停

20、送忙音;超时停送忙音主叫进程设计 7.4.2process caller(lineno dev_no)1(15)dcl cd_num num, cd_no idx4, code dial_no;dcl lineno, called_lno dev_no, cd_pid pid, a_rslt ana_rslt;dcl succ_flag boolean; timer T;imported procedure dgt_ana;FPAR in dial_no;RETURNS ana_rslt;imported procedure numtodev;FPAR in num,in/out devno;

21、RETURNS boolean; imported procedure set_idle;FPAR in dev_no声明变量和定时器引入三个远端过程主叫进程设计 process caller(lineno dev_no)2(15)cd_no: =0dial_tone_on(lineno)dial_toneset(now+10*Sec, T)从起始域直接进入拨从起始域直接进入拨号音状态号音状态主叫进程设计 7.4.2l 拨号音状态下可能收到的输入有:拨号号码 后续状态:收号状态、空号音状态挂机 后续状态:进程终止定时器超时 后续状态:忙音状态主叫进程设计 7.4.2l 收号状态下可能收到的输入

22、有:拨号号码 后续状态:收号状态、占用状态、空号音状态挂机 后续状态:进程终止定时器超时 后续状态:忙音状态主叫进程设计 7.4.2l 占用状态下可能收到的输入有: 占用证实 后续状态:回铃音状态 占用拒绝 后续状态:忙音状态 定时器超时 后续状态:忙音状态 挂机 后续状态:?主叫进程设计 7.4.2msc seizure_onhookmanageoff_hook(ua)callercalleddial_tone_ondigitdigittone_offdigitdigitdigitdigitseizure_req(ub)seizure_indringing_onsiezure_confon_

23、hookuaub主叫进程已消失主叫进程已消失on_hook占用状态下挂机的情况主叫进程设计 7.4.2l 设置“延迟释放”状态,用来处理占用状态下收到“挂机”的情况。l 延迟释放状态下可能收到的输入有:占用证实 向被叫进程回“释放”消息占用拒绝定时器超时 后续状态都是进程终止主叫进程设计 7.4.2延迟释放msc delay_releasemanagereleasecallercalledsiezure_confringing_off主叫进程设计 7.4.2l 回铃音状态下可能收到的输入有:应答 后续状态:通话状态挂机 后续状态:进程终止定时器超时 后续状态:忙音状态l 通话状态下可能收到的输

24、入有:释放(对方挂机) 后续状态:忙音状态挂机 后续状态:进程终止主叫进程设计 7.4.2l 空号音状态下可能收到的输入有:挂机 后续状态:进程终止定时器超时 后续状态:忙音状态l 忙音状态下可能收到的输入有:挂机 后续状态:进程终止定时器超时 后续状态:停忙音,进入挂起状态,等待用户挂机主叫进程设计(4)process caller3(15)dial_tonedigit(lineno, code)cd_num(cd_no):=code,cd_no := cd_no+1dial_tone_off(lineno)reset(T)1on_hookdial_tone_off(lineno)reset

25、(T)kill(lineno) to parent主叫进程设计(5)process caller4(15)set(now+20*Sec, T)1recv_dgtdial_toneTbusy_tone_on(lineno)set(now+40*Sec, T)busy_tone主叫进程设计(6)process caller5(15)recv_dgtdigit(lineno, code)cd_num(cd_no):=code,cd_no := cd_no+1reset(T)2on_hookreset(T)kill(lineno) to parentset(now+20*Sec, T)cd_no3-(

26、false)(true)主叫进程设计(7)process caller6(15)called_lno:=ana_rslt2set(now+1*Sec, T)ana_rsltseizureelse(16)recv_dgtTbusy_tone_on(lineno)set(now+40*Sec, T)busy_tonedgt_ana(cd_num, ana_rslt)3seizure_req(called_lno)主叫进程设计(8)process caller7(15)set(now+40*Sec, T)3null_tonenull_tone_on(lineno)主叫进程设计(9)process c

27、aller8(15)seizureseizure_confcd_pid:=senderreset(T)on_hookset(now+60*Sec, T)ring_tonedelay_rlsringback_tone_on(lineno)主叫进程设计(10)process caller9(15)seizurerejectreset(T)Tset(now+40*Sec, T)busy_tonebusy_tone_on(lineno)主叫进程设计(11)process caller10(15)ring_toneanswerreset(T)on_hookreset(T)kill(lineno) to

28、parentconnectedringback_tone_off(lineno)ringback_tone_off(lineno)release to cd_pidconnect(lineno, called_lno)主叫进程设计(12)process caller11(15)ring_toneTbusy_tone_on(lineno)set(now+40*Sec, T)busy_tone主叫进程设计(13)process caller12(15)connectedreleaseset(T+40*Sec, T)on_hookkill(lineno) to parentbusy_tonedisc

29、onnect(lineno, called_lno)release to cd_piddisconnect(lineno, called_lno)busy_tone_on(lineno)主叫进程设计(14)process caller13(15)busy_toneon_hookreset(T)Tbusy_tone_off(lineno)kill(lineno) to parent主叫进程设计(15)process caller14(15)null_toneon_hookreset(T)Tnull_tone_off(lineno)kill(lineno) to parentbusy_tone_o

30、n(lineno)set(now+40*Sec, T)busy_tone主叫进程设计(16)process caller15(15)delay_rlsseizure_confrejectrelease to senderkill(lineno) to parent被叫进程设计 7.4.3l 被叫进程主要完成以下功能:向用户振铃监测用户应答(摘机)监视用户挂机收到主叫挂机消息后,向用户送忙音,等待用户挂机l 被叫进程中需要记录的数据项有:被叫用户设备号主叫进程实例标识(pid)被叫进程设计 7.4.3process called(lineno dev_no)1(4) dcl crpid pid;timer Tring:=60*Sec;timer Tbusy:=40*Sec;seizure_ind(crpid)seizure_conf to cr_pidringing_on(lineno)set(Tring)IDLERING被叫进程对占用指示信号的处理 7.4.3、被叫进程设计n功能o振铃控制o应答和挂机处理o忙音控制n需要记录的数据项o被叫用户逻辑线号o主叫进程实例标识(pid)n状态o空闲状态(Idle)o振铃状态(Ring)o通话状态

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论