




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 藥品市場競爭的動力與策略試題及答案
- 人教部編版一年級語文上冊課課練 漢語拼音
- 藥物致效機制探索試題及答案
- 靈活應用的臨床執業醫師考試試題及答案
- 激光技術的誤區與真相試題及答案
- 處方管理考試試題及答案
- 圖書管理員學術寫作能力試題及答案
- 藥劑專業綜合能力考核試題及答案
- 激光傳感器的應用與發展趨勢試題及答案
- 激光工程師考試的職業前景分析試題及答案
- 臨床診療規范培訓
- 裝配式建筑 構件生產與施工-預制墻板的套筒灌53課件講解
- 2024年度氣象服務與地質災害預警合同3篇
- 足浴店衛生管理規章制度模版(3篇)
- 2024年施工負責人考試題庫
- 碼頭修復工程施工組織設計1
- 2024年考研(英語一)真題及參考答案
- 醫院培訓課件:《醫患溝通技巧》
- 綠色節能液冷數據中心白皮書 2023
- 手機支架供貨合同模板
- 金價走勢分析
評論
0/150
提交評論