マイコン工作実験日記

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

発着信時処理の改善

2008-01-16 11:34:25 | W-SIM
昨日の記事で、「着信に応答しないとW-SIMが勝手に切断してしまう」問題について書きましたが、その対策法がわかりました。そもそも問題の認識が間違っていました。正確には、W-SIMが切断しているのではなく、網側から切断されていました。以下がそのログです。

RING
PROTOCOL=0
ID=
CAUSE=USER REQUEST

DISC

REASON:66

PROGIND:0

NO CARRIER

REASON:66

DISCメッセージが切断要求があったことを示しており、切断原因(0x66 = 102)はタイマの満了を示しています。

以前から奇妙に感じていたのですが、W-SIMに対して別の電話機から発信すると、呼出音(RBT: Ring Back Tone)が聞こえないのです。W-SIM側で着信に応答すると、発信側ではダイアル後、呼出音がせずにいきなりつながってしまうのです。この動作について考えてみると、

「おそらく着信が入ってもW-SIMが網に対してALERTINGメッセージを送出していないのだろう」

と推測することができます。網側は着信を知らせるSETUPを打ってから、端末側の着信処理が進んで、適切な応答が返ってくるのを待っています。必要な応答が一定時間内に返ってこない場合には、網側から切断をおこなってきます。切断されるまでの時間がおよそ10秒だったので、NTTのISDN技術参考資料を調べてみるとT310タイマーが10秒に設定されており、ちょうど発生している現象に符合します。このタイマーの停止条件より、網側は、W-SIMからALERTING, CONNECTあるいはDISCが送られてくるのを待っていると考えられます。この仮定が正しければ、W-SIMにはALERTINGを送出するための手段として、なんらかの仕掛けが用意されているのに違いありません。そう考えてWikiのATコマンド一覧を見直してみると、AT@CALLEDというコマンドがあるのに気が付きました。説明が無いのですが、如何にも自分が呼び出しを検知したことを通知するかのようなネーミングではありませんか。

さっそく着信時処理に小さな修正を加えました。RINGを検出した際にAT@CALLEDを送出するようにしただけです。実際に試してみると ビンゴ!! です。発信側では、呼出音(RBT)が聞こえるようになり、切断されることもなくなりました。着呼時のメッセージの流れは次のようになっていると考えられます。

発信については以前DTEモードでのCTS信号において「DTR信号をいじってみると良さそうだ」と書きましたが、どうやらBREAK信号の送出も有効なことがわかりました。ただし、どのくらいの期間BREAKを送出すれば良いのかがわかりません。不定なのかもしれません。現在は、ATコマンドの送出に先立ち、CTS信号が出るまでBREAKを送出し続けるようにしていますが、このように対処するようにしてから確実にATDでの発信ができるようになりました。

最新の画像もっと見る

3 コメント

コメント日が  古い順  |   新しい順
AT91SAM7S開発について (ゆう)
2008-01-16 16:18:34
コメントを書く場所を迷ったのですが、最新の記事に書いてしまいます。

当方、BestTechnology(http://www.besttechnology.co.jp)のAT91SAM7SのBTC091を、CompilerはYAGARTOを使ってます。

私もsirius506さんと同様にAT91SAM7S256をUSBスピーカーとして使うプログラムを書いているのですがI2Sを使って外部に出力する関係で48KHz/16bit/2chというフォーマットが必須でして、EP1でISO転送を使おうと思っているのです。

ですが、64Byte/1msという転送では速度が間に合わない…、sirius506さんはどのように問題を解決されました?
教えて頂ければ助かります。

DUALバンクを使って1ms毎にもっと大量のデータを受信できるのでしょうか…
返信する
AT91SAM7S開発について (sirius506)
2008-01-16 19:05:37
Rev2ボードでのUSB対応の件ですね。わたしの場合には、EPのサイズについては何の問題も発生しないのです。

W-SIMのような電話用途では、モノラルの8KHzサンプリングにすぎません。そのため16bitで送っても1msあたりのデータ量は16バイトにすぎないのです。

以前別の記事でも書きましたが、AT91SAM7SでのUSBサポートはEPの数といい、サイズといい貧弱ですね。AT91SAM7Xであれば、EP4とEP5が追加されており、256バイトになっているようですから ゆうさんの要求にもマッチするでしょうが128ピンはデカいです。
返信する
返答有難う御座います (ゆう)
2008-01-17 10:14:02
返答ありがとうございます。
8KHzで使用してるのですね。

とりあえずデカくてもAT91SAM7Xで検討する事にします。
それにしてもAT91SAM7のUSBがFIFOなのは厳しいです。
MCK=18.432MHz動作時にFDRの192byte Readで500usも掛かってしまいます...
実際には12.288MHz動作が必須で、そうするとSAM-BAが使えなくて...

I2Sを使おうとするとクロック周りの設定が厳しいです orz
返信する

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。