前回は呼制御信号だけを使って呼び出し音を鳴らしました。今回は、フローをちょっとだけ変えて、下図のように網側からのトーキーを流すシーケンスを想定してみます。通話相手とはまだつながっていない状態ですが、網からは音声が流れてくるので、これをRTPにしてSIPクライアントに送ることになります。
依然としてW-SIMはまだつながっていないので、前回と同様シーケンスの右半分はソフトウェアで疑似的に実現しています。前回180 Ringingだった箇所が183 Session Progressに代っているわけですが、今回はRTPを流すために、RTPで使用するポート番号を指定するSDPを付け加えています。また、とりあえず音声は片方向だけでいいだろうということで、a=sendonly をSDPの中で指定しています。
183で指定するポート番号は、VoIP GW側で使用するポート番号ですが、20002を固定で使うことにします。相手側のポート番号は<storong>INVITEに含まれているSDPの中に記述されていますので、この解析処理を追加してやりました。そして、183の送出とともにRTPを送信するタスクを起動してやります。送信する音声データは、これまでも試験目的でしばしば使っている"Hello World"です。
まだ呼がつながる前の状態ですので、X-Lite側でオンフックするとCANCELが送られてきます。これを受けてRTPの送信タスクを終了しています。
X-Liteの画面ではトーキーが流れている間、次のように "Calling"と表示されました。RTPはTOPPERSの周期ハンドラの機能を使って20ms間隔で送信していますが、10分くらい放置しても継続して動作しているので、Ethernetの送信ドライバまで問題なく動作しているようです。
依然としてW-SIMはまだつながっていないので、前回と同様シーケンスの右半分はソフトウェアで疑似的に実現しています。前回180 Ringingだった箇所が183 Session Progressに代っているわけですが、今回はRTPを流すために、RTPで使用するポート番号を指定するSDPを付け加えています。また、とりあえず音声は片方向だけでいいだろうということで、a=sendonly をSDPの中で指定しています。
183で指定するポート番号は、VoIP GW側で使用するポート番号ですが、20002を固定で使うことにします。相手側のポート番号は<storong>INVITEに含まれているSDPの中に記述されていますので、この解析処理を追加してやりました。そして、183の送出とともにRTPを送信するタスクを起動してやります。送信する音声データは、これまでも試験目的でしばしば使っている"Hello World"です。
まだ呼がつながる前の状態ですので、X-Lite側でオンフックするとCANCELが送られてきます。これを受けてRTPの送信タスクを終了しています。
X-Liteの画面ではトーキーが流れている間、次のように "Calling"と表示されました。RTPはTOPPERSの周期ハンドラの機能を使って20ms間隔で送信していますが、10分くらい放置しても継続して動作しているので、Ethernetの送信ドライバまで問題なく動作しているようです。