マイコン工作実験日記

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

同時2通話の接続

2012-04-12 06:18:57 | WT32/BM20
WCA-009が搭載するWT32の特徴のひとつに、複数のデバイスと複数のBluetooth接続をおこなえるマルチリンク、マルチポイント接続機能があります。単に複数のリンクを扱うだけであれば、音楽プレーヤと接続して用いるBluetoothヘッドフォンのような用途ではステレオ音声のリンクを扱うために必須の機能でもあります。これに加えて、携帯電話の通話にも使うためには、音楽プレーヤと携帯電話の双方とペアリングを行い、同時にA2DP/AVRCPとHFPの接続を保持できる必要があります。

このように複数のデバイスと異なるプロファイルで接続することが可能なのですが、複数のデバイスと同一のプロファイルで接続することもできます。例えば、携帯電話を2つ接続することもできます。


list
LIST 2
LIST 0 CONNECTED HFP 667 0 0 71 8d 8d 5c:9a:d8:c4:49:5f 3 INCOMING SNIFF SLAVE ENCRYPTED 0
LIST 1 CONNECTED HFP 667 0 0 34 8d 8d 00:16:97:25:9f:48 3 INCOMING SNIFF MASTER ENCRYPTED 0


上の例のように2つの携帯をつなげたとしても、WT32の音声インタフェースはひとつしかありませんので、通常は片方の端末としか通話はできません。片方の端末で通話中に、もう片方の端末に着信があったとしたならば、着信を拒否しないといけないわけですが、着信を受けてしまったらどうなるんでしょうか?実際に試してみました。


list
LIST 3
LIST 0 CONNECTED HFP 667 0 0 101 8d 8d 5c:9a:d8:c4:49:5f 3 INCOMING ACTIVE SLAVE ENCRYPTED 0
LIST 1 CONNECTED HFP 667 0 0 64 8d 8d 00:16:97:25:9f:48 3 INCOMING SNIFF MASTER ENCRYPTED 0
LIST 2 CONNECTED SCO 5 5c:9a:d8:c4:49:5f INCOMING ACTIVE SLAVE ENCRYPTED
NO CARRIER 3 ERROR 11f HCI_ERROR_UNSPECIFIED
RING 3 00:16:97:25:9f:48 SCO
HFP 1 STATUS "callsetup" 1
HFP 1 RING
HFP 1 CALLERID "042XXXXXX0" "" 31
@1 answer
HFP 1 RING
HFP 1 CALLERID "042XXXXXX0" "" 31
HFP 1 STATUS "call" 1
HFP 1 STATUS "callsetup" 0

list
LIST 4
LIST 0 CONNECTED HFP 667 0 0 125 8d 8d 5c:9a:d8:c4:49:5f 3 INCOMING SNIFF SLAVE ENCRYPTED 0
LIST 1 CONNECTED HFP 667 0 0 88 8d 8d 00:16:97:25:9f:48 3 INCOMING ACTIVE MASTER ENCRYPTED 0
LIST 2 CONNECTED SCO 29 5c:9a:d8:c4:49:5f INCOMING SNIFF SLAVE ENCRYPTED
LIST 3 CONNECTED SCO 7 00:16:97:25:9f:48 INCOMING ACTIVE MASTER ENCRYPTED


着信にanswerコマンドで応答すると、ちゃんと音声パスのSCOリンクが新たに作られます。ところが、実際には2つ目の呼では音声通話はできません。相手側は無音状態になってしまいました。Bluetoothリンク上では音声が流れているハズなのですが、それをユーザに対して入出力するクチが無いために無音状態となってしまいます。

このように、複数の音声通話リンクは普通は扱えないのですが、iWRAPではこれを可能とするための仕掛けが用意されています。MULTISCO機能がそれで、SET CONTROL AUDIOコマンドで設定することがでできます。この機能を用いると、最初の通話にはステレオヘッドセットの左側のチャネルを割り当て、次の通話には右側のチャネルを割り当てるという仕掛けです。実際に試してみました。


set control audio internal internal multisco event
...
...
NO CARRIER 3 ERROR 11f HCI_ERROR_UNSPECIFIED
RING 3 00:16:97:25:9f:48 SCO
AUDIO ROUTE 3 SCO RIGHT
HFP 1 STATUS "callsetup" 1
HFP 1 RING
HFP 1 CALLERID "042XXXXX20" "" 31
@1 answer
HFP 1 RING
HFP 1 CALLERID "042XXXXX20" "" 31

HFP 1 STATUS "call" 1
AUDIO ROUTE 2 SCO LEFT
AUDIO ROUTE 3 SCO RIGHT
HFP 1 STATUS "callsetup" 0

list
LIST 4
LIST 0 CONNECTED HFP 667 0 0 55 8d 8d 5c:9a:d8:c4:49:5f 3 INCOMING SNIFF SLAVE ENCRYPTED 0
LIST 1 CONNECTED HFP 667 0 0 51 8d 8d 00:16:97:25:9f:48 3 INCOMING ACTIVE MASTER ENCRYPTED 0
LIST 2 CONNECTED SCO 33 5c:9a:d8:c4:49:5f INCOMING SNIFF SLAVE ENCRYPTED
LIST 3 CONNECTED SCO 20 00:16:97:25:9f:48 INCOMING ACTIVE MASTER ENCRYPTED


SET CONTROL AUDIOコマンドにEVENTパラメータを付けておくことで、チャネル割り当て状況が表示されるようになりました。が、しかし。。。やっぱりふたつめの通話は無音状態になってしまいました。マニュアルには、「この機能は実験的な実装であり、ちゃんと動かないかもしれない」と明記されています。なんらかの条件によって、動く場合もあれば動かない場合もあるということなのだと推測しますが、その条件については全く触れられていません。iWRAP5 betaでも動作確認してみましたが、2通話評価する以前に、2通話目への応答ができませんでした。まだまだ、問題山積の様子。うーん、残念ですが、今回の実験はここまで。

なお、ことなるデバイスと複数のA2DP接続をおこなうこともできますが、やはり双方のデバイスからストリートを同時に流されると音が途切れるという不具合が生じてしまいます。片側のストリームを止めてから、もう片側のストリームを流すように制御してやる必要があるようです。

最新の画像もっと見る

コメントを投稿

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