マイコン工作実験日記

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

再生中着信時の動作

2010-10-23 20:48:11 | Weblog
きょうもWT32ネタです。今回はMP3プレーヤ機能とW-SIM通話の共存を目指していますので、MP3プレーヤで再生中にPHSの着信があった場合にも対応しなければなりません。そんな時に、WT32がどう動くのかを検証しておこうというのが、本日のテーマです。

まずはWT32をブートしてから、ヘッドセットの電源を入れます。するとヘッドセットが自動的にHFPで接続してきます。この状態で、WT32にringコマンドを入力すると、ヘッドセットでちゃんと着信音が鳴ってくれます。そして、ヘッドセット側のスイッチ操作で着信拒否できます。ここまではすでに、HFPの動作確認時に実験済みです。



続いてヘッドセットの再生ボタンを操作すると、A2DPとAVRCPのリンクが張られ、オーディオパスが動作開始。これも望んだとおりの動作です。ところが、再生中にringコマンドを入力して着信通知をしようとするとエラーになってしまいます。それもSYNTAX ERRORです。綴りが間違っているわけじゃやないんで、明らかにA2DPとAVRCPが動いている状態でringを入れているのがいけないようです。

同時に複数プロファイルの動作はできるはずなのに、どうしてHFPのringコマンドがエラーになるのかしばらく理解できずにいましたが、マニュアルを読んで@なるコマンドが存在することを知ってようやくと納得できました。どうやらiWRAPのコマンドは、ディフォルトで直近に選択されたリンクに対して送信されるようなのです。上記の例だと、直前にA2DPのリンクが張られていますので、A2DPに対してringコマンドを送った結果、無効なコマンドと認識されてエラーとなっているようです。ringコマンドはHFPに対して送られるべきであり、そのためには明示的にリンクを指定してやる必要があるのでした。

各リンクにはリンク番号が振られており、listコマンドでこれを確認することができます。HFPとA2DP/AVRCPがつながっている時には、次のようになります。



HFPのリンク番号は0番なので、@コマンドでこれを指定してringを送ってやると、ちゃんと着信音が鳴りました。しかも上記のログにも見えるように、WT32が自動的にA2DPのストリームをいったん止めてくれているようです。なかなか気が利いてるじゃん!! 着信拒否すると、自動的に再開してくれるし。

しばらく悩んでいた問題が解決して、やりたいことが実現できそうなことが確認できたのはいいのですが、複数のプロファイルとそのリンク番号の対応をちゃんと管理しなければいけいないことも判明。これまでずっと、手作業でWT32の動作確認とってきましたが、そろそろちゃんと制御ソフト書かねば。。