Xớy dỷơng maõy traơng thaõi

Một phần của tài liệu Tài liệu Luận văn tốt nghiệp "Xử lý cuộc gọi dịch vụ điện thoại IP và ứng dụng trong Gateway PSTN - IP" docx (Trang 98 - 103)

Chỷỳng 4 : Xớy dỷơng phớỡn mùỡm xỷờ lủ cuửơc goơi cho gateway

3.Xớy dỷơng maõy traơng thaõi

Chỷỳng trũnh xỷờ lủ cuửơc goơi ặỳơc xớy dỷơng dỷơa trùn nùỡn taờng lađ cãc traơng thãi cuửơc goơi. Mửơt cuửơc goơi lađ sỷơ liùn laơc ăa phỷỳng tiùơn giỷụa hai ăiùớm cuửịi. Cuửơc goơi ặỳơc bựưt ăớỡu vỳõi thuờ tuơc thiùịt lớơp cuửơc goơi vađ kùịt thũc vỳõi thuờ tuơc giaời phõng cuửơc goơi. Traơng thãi cuửơc goơi lađ mửơt giai ăoaơn ặỳơc ắnh nghụa roụ rađng trong suửịt thỳđi gian xaờy ra cuửơc goơi.

Mửợi cuửơc goơi cõ xu hỷỳõng duy trũ traơng thãi hiùơn taơi vađ chú chuýớn sang traơng thãi mỳõi khi nhớơn ặỳơc nhỷụng baờn tin mong muửịn.

Mửợi traơng thãi cuờa cuửơc goơi seụ cõ tỷỳng ỷõng mửơt hađm state machine. Hađm nađy seụ ặỳơc goơi ăùớ xỷờ lủ sỷơ kiùơn nhớơn ặỳơc. Khi kùnh chuýớn sang traơng thãi mỳõi, hađm state machine cuờa nõ cuụng thay ăửới.

Cuửơc goơi tỷđ maơng PSTN vađo

GATE_INIT: Ăớy lađ traơng thãi mađ ỷõng duơng chỷa khỳời taơo cãc component vađ cãc thù hiùơn cuờa component cuờa cãc tađi nguýn.

WAIT_FOR_CALL: Ăớy lađ traơng thãi mađ ỷõng duơng ăaụ khỳời taơo xong cãc component vađ cãc thùớ hiùơn cuờa component, ăựng kủ cãc message vỳõi firmware. Lũc nađy kùnh ỳờ traơng thãi sựĩn sađng nhớơn cuửơc goơi. Khi cõ cuửơc goơi ăùịn tỷđ phủa PSTN, ỷõng duơng nhớơn ặỳơc sỷơ kiùơn DTI_OFF_HOOK, nõ seụ kiùớm tra traơng thãi hiùơn taơi cuờa kùnh:

Nùịu kùnh bớơn thũ nõ seụ tỷđ chửịi cuửơc goơi bựỡng cãch gỷời Tone bão bớơn cho maơng PSTN.

Nùịu kùnh rửợi, nõ mỳờ kùnh thửng tin ăùịn maơng PSTN, thỷơc hiùơn kùịt nửịi kùnh thửng tin thoaơi giỷụa PSTN vađ NetTSCCluster vađ gỷời message TSC_MsgMakeCall ăùịn NetTSC component ăùớ thiùịt lớơp cuửơc goơi sang phủa IP. Traơng thãi tiùịp theo lađ WAIT_FOR_CONNECT.

WAIT_FOR_CONNECT: Lũc nađy, kùnh ăang chỳđ phủa IP traờ lỳđi.

Nùịu ỷõng duơng nhớơn ặỳơc message

TSC_EvtCallState_Type_Failed cho biùịt viùơc kùịt nửịi cuửơc goơi phủa IP thớịt baơi (cõ thùớ do khửng ăũng ắa chú, hoựơc do chuớớn maụ hoã khửng phuđ hỳơp). Nõ thỷơc hiùơn viùơc giaời phõng cuửơc goơi bựỡng cãch gỷời ăi message TSC_MsgDropCall vađ kùnh chuýớn sang traơng thãi WAIT_FOR_IDLE.

Nùịu nhớơn ặỳơc message TSC_EvtCallState_Type_Connected cho biùịt ýu cớỡu kùịt nửịi ăaụ ặỳơc chớịp nhớơn, kùnh chuýớn sang traơng thãi kùịt nửịi WAIT_FOR_DISCONNECT.

WAIT_FOR_DISCONNECT: Ăớy lađ traơng thãi mađ cuửơc goơi ăaụ ặỳơc kùịt nửịi thađnh cửng, hai bùn ăang trao ăửới cãc thửng tin thoaơi vỳõi nhau. Lũc nađy, nùịu mửơt trong hai bùn thỷơc hiùơn thuờ tuơc kùịt thũc

WAIT_FOR_CALL GATE_INIT

WAIT_FOR_CONNECT

WAIT FOR IDL

WAIT_FOR_RELEAS PSTN_RELEASE WAIT_DONE NetTSC: TSC_EvtCallState_Type_Null PSTN đã gác máy PSTN: DIGITAL_ON_HOOK hoƯc NetTSC: PSTN: NetTSC: PSTN: DIGITAL_ON_HOOK hoƯc NetTSC: TSC_EvtCallState_Type_Failed NetTSC: TSC_EvtCallState_Type_Idled NetTSC: PSTN: DIGITAL_ON_HOOK NetTSC: TSC_EvtCallState_Type_Null PSTN đã gác máy NetTSC: NetTSC:

cuửơc goơi, ỷõng duơng nhớơn ặỳơc sỷơ kiùơn DTI_ON_HOOK tỷđ phủa PSTN hoựơc message tỷđ NetTSC, nõ seụ thỷơc hiùơn viùơc cựưt kùịt nửịi thoaơi giỷụa hai bùn, thiùịt lớơp traơng thãi kùnh PSTN lùn on hook (giaời phửng kùịt nửịi PSTN) vađ gỷời ăùịn NetTSC message TSC_MsgDropCall ăùớ huyờ boờ kùịt nửịi phủa IP. Traơng thãi tiùịp theo cuờa kùnh lađ WAIT_FOR_IDE.

WAIT_FOR_IDLE: Firmware ăang thỷơc hiùơn viùơc giaời phõng kùịt nửịi vỳõi bùn IP. Khi ăa thỷơc hiùơn xong viùơc huyờ boờ kùịt nửịi, NetTSC seụ bão cho ỷõng duơng bựỡng message TSC_EvtCallState_Type_Idled. Lũc nađy mựơc duđ kùịt nửịi vỳõi phủa IP ăaụ ặỳơc giaời phõng nhỷng cãc tađi nguýn trong firmware vớợn chỷa ặỳơc giaời phõng, cãc thửng tin vùỡ cuửơc goơi vớợn cõ thùớ ặỳc sỷờ duơng. Ăùớ thửịng kù cuửơc goơi baờn tin TSC_MsgGetCallInfo ặỳơc gỷời ăi ăùịn NetTSC. NetTSC traờ lỳđi bựỡng baờn tin TSC_MsgGetCallInfoCmplt cõ chỷõa cãc thửng tin thửịng kù cuửơc goơi nhỷ: thỳđi gian, sửị gõi tin truýỡn ăi, nhớơn ặỳơc, sửị gõi tin bừ mớịt...

Sau khi ăaụ lớịy thửng tin thửịng kù cuửơc goơi, ỷõng duơng gỷời ăùịn NetTSC message TSC_MsgReleaseCall ýu cớỡu firmware giaời phõng tađi nguýn, traơng thãi tiùịp theo lađ WAIT_FOR_RELEASE.

WAIT_FOR_RELEASE: Ăớy lađ traơng thãi mađ ỷõng duơng ăang chỳđ cho firmware giaời phõng tađi nguýn liùn quan ăùịn cuửơc goơi. Khi firmware giaời phõng xong tađi nguýn, nõ thửng bão cho ỷõng duơng biùịt bựỡng message TSC_EvtCallState_Type_Null. Lũc nađy cõ hai khaờ nựng xaờy ra:

Nùịu cuửơc goơi kùịt thũc lađ do phủa PSTN ýu cớỡu, do ăõ phủa PSTN lũc nađy ăaụ hoađn toađn ặỳơc giaời phõng, vũ vớơy ỷõng duơng thỷơc hiùơn thiùịt lớơp laơi cãc giã trừ ban ăớỡu cho cớịu trũc Dm3NetTSC vađ chuýớn sang traơng thãi WAIT_FOR_CALL sựĩng sađng nhớơn cuửơc goơi tiùịp theo.

Nùịu cuửơc goơi lađ do phủa IP ýu cớỡu kùịt thũc, lũc nađy kùnh phaời chỳđ cho phủa PSTN giaời phõng, traơng thãi tiùịp theo cuờa kùnh lađ PSTN_RELEASE.

PSTN_RELEASE: Nùịu kùnh nhớơn ặỳơc tủn hiùơu gãc mãy tỷđ phủa PSTN, nõ chuýớn sang traơng thãi WAIT_FOR_CALL chỳđ cuửơc goơi tiùịp theo. Tuy nhiùn trong traơng thãi nađy, kùnh cuụng cõ thùớ nhớơn

ặỳơc ýu cớỡu thiùịt lớơp cuửơc goơi tỷđ bùn IP. Lũc ăõ nõ phaời chuýớn tỷđ chửịi cuửơc goơi vađ chuýớn sang traơng thãi WAIT_DONE ăùớ chỳđ cho firmware giaời phõng tađi nguýn cuửơc goơi vỷđa mỳõi bừ tỷđ chửịi.

WAIT_DONE: Khi tađi nguýn cuửơc goơi ăaụ ặỳơc giaời phõng, kùnh seụ nhớơn ặỳơc baờn tin TSC_EvtCallState_Type_Null. Lũc ăõ nõ phaời kiùớm tra liùơu phủa PSTN ăaụ gãc mãy hay chỷa (sỷờ duơng mửơt biùịn waitOnHook kiùớu BOOL cho mửợi kùnh ăùớ kùớm tra), nùịu rửỡi thũ traơng thãi tiùịp theo lađ WAIT_FOR_CALL, ngỷỳơc laơi trỳờ vùỡ traơng thãi PSTN_RELEASE.

Cuửơc goơi tỷđ maơng IP vađo

GATE_INIT: Ăớy lađ traơng thãi mađ ỷõng duơng chỷa khỳời taơo cãc component vađ cãc thù hiùơn cuờa component cuờa cãc tađi nguýn.

WAIT_FOR_CALL: Ăớy lađ traơng thãi mađ ỷõng duơng ăaụ khỳời taơo xong cãc component vađ cãc thùớ hiùơn cuờa component, ăựng kủ cãc message vỳõi firmware. Lũc nađy kùnh ỳờ traơng thãi sựĩn sađng nhớơn cuửơc goơi. Khi cõ cuửơc goơi ăùịn tỷđ phủa IP, ỷõng duơng nhớơn ặỳơc message TSC_EvtCallState_Type_Offer, nõ seụ kiùớm tra traơng thãi hiùơn taơi cuờa kùnh:

Nùịu kùnh bớơn thũ nõ seụ tỷđ chửịi cuửơc goơi bựỡng cãch gỷời message TSC_MsgRejectCall ăùịn NetTSC component. Traơng thãi tiùịp theo cuờa kùnh lađ WAIT_FOR_IDLE.

Nùịu kùnh rửợi nõ gỷời message TSC_MsgGetCallInfo ăùịn NetTSC component ăùớ lớịy thửng tin vùỡ cuửơc goơi, sau ăõ nõ gỷời baờn tin TSC_MsgAnswerCall ăùớ chớịp nhớơn cuửơc goơi. Traơng thãi tiùịp theo lađ WAIT_FOR_PSTN_CONNECT. (adsbygoogle = window.adsbygoogle || []).push({});

WAIT_FOR_CONNECT: Lũc nađy, kùnh ăang chỳđ phủa IP xãc nhớơn kùịt nửịi thađnh cửng.

Nùịu nhớơn ặỳơc message TSC_EvtCallState_Type_Connected tỷđ NetTSC nõ thỷơc hiùơn thuờ tuơc quay sửị sang maơng PSTN, thỷơc hiùơn kùịt nửịi luửỡng thửng tin thoaơi giỷụa hai bùn (cho phẽp bùn IP cõ thùớ nghe ặỳơc cãc Tone cuờa PSTN) vađ chuýớn sang traơng thãi PSTN_INIT.

Trong lũc nađy kùnh cõ thùớ nhớơn ặỳơc message TSC_EvtCallState_Type_Idled cho biùịt cuửơc goơi phủa IP ặỳơc giaời phõng, nõ gỷời message TSC_MsgReleaseCall ăùịn NetTSC.

Ngoađi ra nõ cuụng cõ thùớ nhớơn ặỳơc message TSC_EvtCallState_Type_Failed cho biùịt viùơc kùịt nửịi cuửơc goơi phủa IP

PSTN: DIGITAL_OFFHOOK NetTSC: TSC_EvtCallState_Type_Connected

Quay sỉ sang PSTN

hoƯc NetTSC: TSC_EvtCallState_Type_Failed

Gửi TSC_MsgDropCall đến NetTSC

WAIT_FOR_CALL GATE_INIT WAIT_FOR_CONNECT WAIT_FOR_DISCONNECT WAIT_FOR_IDLE WAIT_FOR_RELEAS PSTN_RELEASE WAIT_DONE PSTN_INIT NetTSC: TSC_EvtCallState_Type_Null PSTN đã gác máy PSTN: DIGITAL_ON_HOOK

hoƯc NetTSC: TSC_EvtCallState_Type_Disconnected

Gửi TSC_MsgDropCall đến NetTSC

NetTSC: TSC_EvtCallState_Type_Offered Gửi TSC_MsgGetCallInfo đến NetTSC NetTSC: TSC_EvtCallState_Type_Idled Gửi TSC_MsgGetCallInfo đến NetTSC NetTSC: TSC_EvtCallState_Type_Null PSTN ch-a gác máy PSTN: DIGITAL_ON_HOOK NetTSC: TSC_EvtCallState_Type_Null PSTN đã gác máy NetTSC: Std_MsgDetectEvtsCmplt NetTSC:

hoƯc NetTSC: TSC_EvtCallStat e_Type_Idled

Gửi TSC_MsgReleaseCall đến

thớịt baơi (cõ thùớ do khửng ăũng ắa chú, hoựơc do chuớớn maụ hoã khửng phuđ hỳơp). Nõ thỷơc hiùơn viùơc giaời phõng cuửơc goơi bựỡng cãch gỷời ăi message TSC_MsgDropCall vađ kùnh chuýớn sang traơng thãi WAIT_FOR_IDLE.

PSTN_INIT: ỳờ traơng thãi nađy kùnh ăang chỳđ phủa PSTN traờ lỳđi, cãc message mađ kùnh cõ thùớ nhớơn ặỳơc lũc nađy lađ:

Kùnh nhớơn ặỳơc sỷơ kiùơn DTI_OFF_HOOK cho biùịt bùn PSTN traờ lỳđi cuửơc goơi, nõ chuýớn sang traơng thãi WAIT_FOR_DISCONNECT.

Kùnh nhớơn ặỳơc message TSC_EvtCallState_Type_Disconnected cho biùịt lađ phủa IP ăaụ huyờ boờ cuửơc goơi. Nõ gỷời message TSC_MsgDropCall ăùớ ýu cớỡu giaời phõng cuửơc goơi, traơng thãi tiùịp theo cuờa kùnh lađ WAIT_FOR_IDLE.

Cãc traơng thãi tiùịp theo cuờa trỷỳđng hỳơp nađy hoađn toađn giửịng vỳõi trỷỳđng hỳơp cuửơc goơi PSTN inbound (giai ăoaơn kùịt thũc cuửơc goơi).

Một phần của tài liệu Tài liệu Luận văn tốt nghiệp "Xử lý cuộc gọi dịch vụ điện thoại IP và ứng dụng trong Gateway PSTN - IP" docx (Trang 98 - 103)