マイコン工作実験日記

Microcontroller を用いての工作、実験記録

呼出し音の確認

2008-08-19 23:09:26 | VoIP
SIPクライアントの登録ができたので、次のステップとして発呼の処理にとりかかっています。とは言っても、ハード的にはまだW-SIMすらつながっていないので、当然ながら実際に発呼することはできません。そこでW-SIMのモデム動作をソフトで疑似的に実現してやることで、SIPのプロトコル処理部分の実装とその動作確認作業を進めることにします。

今回、実装と試験を進めるのは、発呼、呼び出しと接続前の切断動作です。相手の呼び出し(ALERT)が確認できた後に、相手が応答する前に発呼側から切断するというシナリオに相当します。下図のようなシーケンスを想定します。

  • クライアントからの発呼動作によって生成されるINVITEを受けて、本来であればW-SIMからの発呼動作をすべきところですが、W-SIMがないので疑似モデムタスクにATDTメッセージを送って、100 Tryingを返すことにします。
  • 疑似モデムタスクは、ATDTメッセージの受信から500ms後にALERTイベントを生成します。これを受けてVoIP GWは180 Ringingをクライアントに送ります。
  • クライアントからの切断操作によって生成されるCANCELを受けたら、疑似モデムタスクにATHメッセージを送って、クライアントには200 OKを送り返します。
  • 疑似モデムタスクはATHの受信から500ms後にOKイベントを生成します。
  • VoIP GWはOKを受けて、クライアントには487を送信します。
  • クライアントは200 OKを返してダイアログが終了します。

今のところ上記フローを実現するために必要な状態遷移表しか用意していません。実験したい手順に応じた状態遷移を順次追加していくことで、だんだんと完成度を高めていくことにします。

現段階ではRTPは全く実装できていないので音声の送受はできません。そのため、上記シーケンスでもINVITEの持つSDPの内容については全く見ていません。しかしながら、180 Ringingをクライアントが受信した時点で、クライアントソフトが自分で呼出し音を生成して流すことができれば、それを確認することができるはずです。X-Liteで試験したところ、次の画面のようになりました。



54321がダイアルした番号です。"Ringing..."という表示とともにめでたくPCのスピーカから呼び出し音が流れだしました。画面右に緑色のインジケータが縦に並んでいますが、呼び出し音に応じてこの表示が上下しました。切断手順も動いているようです。うーん、なんとなく "らしく" なってきました。