
SVTH: THAÁI QUANG TUÂNG 97
http://www.ebooks.vdcmedia.com
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â
caác traång thaá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 thuác vúái thuã tuåc giaãi phoáng cuöåc goåi. Traång thaá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 coá xu hûúáng duy trò traång thaái hiïån taåi vaâ chó
chuyïín sang traång thaái múái khi nhêån àûúåc nhûäng baãn tin mong
muöën.
Möîi traång thaái cuãa cuöåc goåi seä coá 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
chuyïín sang traång thaái múái, haâm state machine cuãa noá cuäng thay
àöíi.
Cuöåc goåi tûâ maång PSTN vaâo
GATE_INIT: Àêy laâ traång thaái maâ ûáng duång chûa khúãi taåo caác
component vaâ caác thïí hiïån cuãa component cuãa caác taâi nguyïn.
WAIT_FOR_CALL: Àêy laâ traång thaái maâ ûáng duång àaä khúãi taåo
xong caác component vaâ caác thïí hiïån cuãa component, àùng kñ caác
message vúái firmware. Luác naây kïnh úã traång thaái sùén saâng nhêån cuöåc
goåi. Khi coá cuöåc goåi àïën tûâ phña PSTN, ûáng duång nhêån àûúåc sûå kiïån
DTI_OFF_HOOK, noá seä kiïím tra traång thaái hiïån taåi cuãa kïnh:
Nïëu kïnh bêån thò noá seä tûâ chöëi cuöåc goåi bùçng caách gûãi Tone baáo
bêån cho maång PSTN.
Nïëu kïnh röîi, noá 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 thaái tiïëp theo laâ
WAIT_FOR_CONNECT.

SVTH: THAÁI QUANG TUÂNG 98
http://www.ebooks.vdcmedia.com
WAIT_FOR_CONNECT: Luá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 (coá thïí do khöng àuáng àõa chó, hoùåc do chuêín maä hoaá khöng
phuâ húåp). Noá thûåc hiïån viïåc giaãi phoáng cuöåc goåi bùçng caách gûãi ài
message TSC_MsgDropCall vaâ kïnh chuyïín sang traång thaái
WAIT_FOR_IDLE.
Nïëu nhêån àûúåc message TSC_EvtCallState_Type_Connected
cho biïët yïu cêìu kïët nöëi àaä àûúåc chêëp nhêån, kïnh chuyïín sang traång
thaái kïët nöëi WAIT_FOR_DISCONNECT.
WAIT_FOR_DISCONNECT: Àêy laâ traång thaái maâ cuöåc goåi àaä
àûúåc kïët nöëi thaânh cöng, hai bïn àang trao àöíi caác thöng tin thoaåi vúái
nhau. Luác naây, nïëu möåt trong hai bïn thûåc hiïån thuã tuåc kïët thuác
WAIT_FOR_CALL
GATE_INIT
WAIT_FOR_CONNECT
WAITFORIDL
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:
H×nh 4.4: Cuéc gäi ®Õn tõ phÝa PSTN

SVTH: THAÁI QUANG TUÂNG 99
http://www.ebooks.vdcmedia.com
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, noá 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 thaá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 thaá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 phoá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ä baáo cho ûáng duång bùçng message
TSC_EvtCallState_Type_Idled. Luác naây mùåc duâ kïët nöëi vúái phña IP
àaä àûúåc giaãi phoáng nhûng caác taâi nguyïn trong firmware vêîn chûa
àûúåc giaãi phoáng, caác thöng tin vïì cuöåc goåi vêîn coá 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 coá
chûáa caác thöng tin thöëng kï cuöåc goåi nhû: thúâi gian, söë goái tin truyïìn
ài, nhêån àûúåc, söë goá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 yïu cêìu firmware giaãi phoáng
taâi nguyïn, traång thaái tiïëp theo laâ WAIT_FOR_RELEASE.
WAIT_FOR_RELEASE: Àêy laâ traång thaái maâ ûáng duång àang
chúâ cho firmware giaãi phoáng taâi nguyïn liïn quan àïën cuöåc goåi. Khi
firmware giaãi phoáng xong taâi nguyïn, noá thöng baáo cho ûáng duång
biïët bùçng message TSC_EvtCallState_Type_Null. Luác naây coá hai khaã
nùng xaãy ra:
Nïëu cuöåc goåi kïët thuác laâ do phña PSTN yïu cêìu, do àoá phña
PSTN luác naây àaä hoaân toaân àûúåc giaãi phoáng, vò vêåy ûáng duång thûåc
hiïån thiïët lêåp laåi caác giaá trõ ban àêìu cho cêëu truác Dm3NetTSC vaâ
chuyïín sang traång thaá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 yïu cêìu kïët thuác, luác naây kïnh phaãi
chúâ cho phña PSTN giaãi phoáng, traång thaái tiïëp theo cuãa kïnh laâ
PSTN_RELEASE.
PSTN_RELEASE: Nïëu kïnh nhêån àûúåc tñn hiïåu gaác maáy tûâ
phña PSTN, noá chuyïín sang traång thaái WAIT_FOR_CALL chúâ cuöåc
goåi tiïëp theo. Tuy nhiïn trong traång thaái naây, kïnh cuäng coá thïí nhêån

SVTH: THAÁI QUANG TUÂNG 100
http://www.ebooks.vdcmedia.com
àûúåc yïu cêìu thiïët lêåp cuöåc goåi tûâ bïn IP. Luác àoá noá phaãi chuyïín tûâ
chöëi cuöåc goåi vaâ chuyïín sang traång thaái WAIT_DONE àïí chúâ cho
firmware giaãi phoáng taâi nguyïn cuöåc goåi vûâa múái bõ tûâ chöëi.
WAIT_DONE: Khi taâi nguyïn cuöåc goåi àaä àûúåc giaãi phoáng,
kïnh seä nhêån àûúåc baãn tin TSC_EvtCallState_Type_Null. Luác àoá noá
phaãi kiïím tra liïåu phña PSTN àaä gaác maá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 thaái tiïëp theo laâ WAIT_FOR_CALL, ngûúåc laåi trúã vïì traång thaái
PSTN_RELEASE.
Cuöåc goåi tûâ maång IP vaâo
GATE_INIT: Àêy laâ traång thaái maâ ûáng duång chûa khúãi taåo caác
component vaâ caác thïí hiïån cuãa component cuãa caác taâi nguyïn.
WAIT_FOR_CALL: Àêy laâ traång thaái maâ ûáng duång àaä khúãi taåo
xong caác component vaâ caác thïí hiïån cuãa component, àùng kñ caác
message vúái firmware. Luác naây kïnh úã traång thaái sùén saâng nhêån cuöåc
goåi. Khi coá cuöåc goåi àïën tûâ phña IP, ûáng duång nhêån àûúåc message
TSC_EvtCallState_Type_Offer, noá seä kiïím tra traång thaái hiïån taåi
cuãa kïnh:
Nïëu kïnh bêån thò noá seä tûâ chöëi cuöåc goåi bùçng caách gûãi message
TSC_MsgRejectCall àïën NetTSC component. Traång thaái tiïëp theo
cuãa kïnh laâ WAIT_FOR_IDLE.
Nïëu kïnh röîi noá gûãi message TSC_MsgGetCallInfo àïën
NetTSC component àïí lêëy thöng tin vïì cuöåc goåi, sau àoá noá gûãi baãn
tin TSC_MsgAnswerCall àïí chêëp nhêån cuöåc goåi. Traång thaái tiïëp theo
laâ WAIT_FOR_PSTN_CONNECT.

SVTH: THAÁI QUANG TUÂNG 101
http://www.ebooks.vdcmedia.com
WAIT_FOR_CONNECT: Luác naây, kïnh àang chúâ phña IP xaác
nhêån kïët nöëi thaânh cöng.
Nïëu nhêån àûúåc message TSC_EvtCallState_Type_Connected tûâ
NetTSC noá 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 pheáp bïn IP coá thïí
nghe àûúåc caác Tone cuãa PSTN) vaâ chuyïín sang traång thaái
PSTN_INIT.
Trong luác naây kïnh coá thïí nhêån àûúåc message
TSC_EvtCallState_Type_Idled cho biïët cuöåc goåi phña IP àûúåc giaãi
phoáng, noá gûãi message TSC_MsgReleaseCall àïën NetTSC.
Ngoaâi ra noá cuäng coá 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
H×nh 4.5: Cuéc gäi ®Õn tõ m¹ng IP

