マイコン工作実験日記

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

音声パス切り替え

2013-07-02 22:39:46 | WT32/BM20
Bluetoothヘッドセットの利用経験の無い方にBlueHANDをデモすると、しばしば見られる行動がひとつあります。それは、「Bluetooth接続したので、こちらのBlueHANDで着信応答や、発信ができます。」と説明しても、実際に着信が入ると先に鳴動する携帯やスマホので思わず応答してしまうという条件反射的とも言える行動です。

もちろん、携帯側でも応答はできます。ところが、次の段階で困った状況が発生します。「もしもし?」と話しかけても相手の声は聞こえません。なぜなら、相手側の音声は、HFPで接続されたヘッドセット側に流れており、携帯側では音声再生されないからです。こういう時に、どう対処すればいいかというと、慌てずに音声パスをBluetoothハンドセット側から携帯側に切り替えればいいのです。通話中の操作メニューや画面に切り替え法が用意されているハズです。例えば、Galaxy S3では下図のように「ヘッドセット」のタッチボタンが表示されています。図の状態はボタン表示が緑色になっており、ヘッドセット側が有効になっていることを示しています。ボタンを押せば、音声は端末側に切り替わり、ボタン表示はグレーに変化します。



上記は携帯端末側での操作でしたが、音声パス切り替えはヘッドセットデバイス側でも操作可能であるべきです。実際、HFPの仕様書では必須項目となっていますので、この機能をもたないヘッドセットがあるとしたら、それはHFPに準拠していないことになります。それでは、これらの機能をWT32を使って実現するには、具体的にはどのようにすれば良いでしょうか?

まず、HF側であるWT32が音声パスをもっている状態から, AGである携帯側に音声パスを転送する手順ですが、これは極めて単純明快です。音声パスである、SCOリンクをクローズすればいいだけです。

closeコマンドでクローズしたのは、音声パスであるSCOコネクションでありHFPリンクではないので、HFP接続や呼が切れてしまうことはありません。次に、WT32側に切り戻す方法ですが、こちらは

というようにsco openコマンドを用います。ここで引数として指定している番号はHFPのリンク番号になります。このコマンドは、AG側に対して音声パスを開くように要求を出し、その結果としてAG側からSCOリンクが張られてきます。

SCO OPENコマンドについては、iWRAPのマニュアルにもちゃんと記載されているのですが、どのような局面で使われるかという説明に欠けています。わたしは、音声パスを切り替えるにはどうすれば良いかを考えてみて、SCO OPENコマンドが使えるのではないかと思いつきました。最初から、マニュアルで上記のような例を明示してもらえれば、わかりやすいのですが。。