マイコン工作実験日記

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

HFP実装仕様の違い

2011-04-04 22:52:03 | Weblog
飲み会ならびに仕事場にてBluetooth対応携帯をお持ちの方にお願いして、HFP接続時の動作を確認してみました。以下、WT32からのメッセージをメモ代わりにコピペしておきます。

Nokia, Softbank
HFP 3 BSRF 47
HFP 3 STATUS "service" 1
HFP 3 STATUS "call" 0
HFP 3 STATUS "call_setup" 0
HFP 3 STATUS "callsetup" 0
HFP 3 READY

820P, Softbank
HFP 0 BSRF 491
HFP 0 STATUS "battchg" 3
HFP 0 STATUS "signal" 2
HFP 0 STATUS "service" 1
HFP 0 STATUS "message" 0
HFP 0 STATUS "call" 0
HFP 0 STATUS "roam" 0
HFP 0 STATUS 7 0
HFP 0 STATUS 8 2
HFP 0 STATUS "callsetup" 0
HFP 0 STATUS "callheld" 0
HFP 0 READY
HFP 0 BSIR 0

F905?, DoCoMo
HFP 0 BSRF 367
HFP 0 STATUS "battchg" 5
HFP 0 STATUS "signal" 5
HFP 0 STATUS "call" 0
HFP 0 STATUS "service" 1
HFP 0 STATUS "callsetup" 0
HFP 0 STATUS 6 0
HFP 0 STATUS 7 0
HFP 0 STATUS 8 0
HFP 0 STATUS "roam" 0
HFP 0 STATUS "callheld" 0
HFP 0 READY
HFP 0 BSIR 1
HFP 0 NETWORK "JP DoCoMo"

IS03, AU
HFP 0 BSRF 35
HFP 0 STATUS "battchg" 5
HFP 0 STATUS "signal" 0
HFP 0 STATUS "service" 1
HFP 0 STATUS "callheld" 0
HFP 0 STATUS "roam" 0
HFP 0 STATUS "callsetup" 0
HFP 0 STATUS "call" 0
HFP 0 READY
HFP 0 STATUS "call" 0
HFP 0 STATUS "callsetup" 0
HFP 0 STATUS "callheld" 0
HFP 0 NETWORK "KDDI"

やはり端末毎にサポートする機能の違いから、少しずつ出力されるメッセージの内容が異なることが確認できます。NETWORK情報を出力しない端末もあるのですね。また同じドコモでも、上の例では"JP DoCoMo"と出力されていますが、わたしのN-02Aでは"JP DOCOMO"と出力されています(前記事参照)。ドコモさんのことですから、端末メーカに対しての要求仕様を整理することで、機能仕様を共通化することを試みているのではないかと想像しますが、完全に統制されていないのでしょうか? この情報は基地局が出力しており、端末は基地局からひろった情報をそのまま出力しているのかとも想像していましたが、同じ場所で試験しても端末によって出力内容が異なることが確認できました。

Nokia端末は比較的シンプルな機能の機種のようでしたが、BluetoothはしっかりサポートしているのがNokiaらしい印象。しかし、実装機能をみるとbattchgやsignalを出してくれないことがわかります。普通のヘッドセットをつなぐだけなら、不要の情報でしょうから割り切っているのかもしれません。

AU端末としては、上記のIS03だけでなくIS01も試してみましたが、全く同じ出力だったので掲載省略しました。どちらも同じシャープ製だからでしょうか?あるいは、Androidのバージョンは違ってもBluetoothのサポートには差異が無いからでしょうか?

注意すべき相違点としては、BSIRの値を挙げることができます。接続したDoCoMo端末はいずれもBSIRが1となっていましたが、他の端末ではBSIRが0あるいは、BSIR情報を出力していません。BSIRは着信時に着信音を端末側がSCOリンクを介して送出してくれるかどうかを示しています。BSIRが1であれば、端末側が送出可能なことを示し、0であれば送出しないことを意味します。BSIRを出力しない端末も着信音は送出しないようです。そこで、両者の着信時動作を確認してみました。

BSIR出力の無い端末(AU IS01)
HFP 3 STATUS "callsetup" 1
HFP 3 RING
HFP 3 CALLERID "03XXXXXXXX" "" 81
HFP 3 STATUS "signal" 5
HFP 3 RING
HFP 3 CALLERID "03XXXXXXXX" "" 81
> hfp answer
@3 answer
HFP 3 STATUS "call" 1
HFP 3 STATUS "callsetup" 0
RING 4 bc:b1:81:2c:a3:3e SCO

BSIR 1の端末 (DoCoMo N-02A)
RING 1 00:16:97:25:9f:48 SCO
HFP 0 STATUS "callsetup" 1
HFP 0 RING
HFP 0 CALLERID "03XXXXXXXX" "" 31
HFP 0 RING
HFP 0 CALLERID "03XXXXXXXX" "" 31
> hfp answer
@0 answer
HFP 0 STATUS "call" 1
HFP 0 STATUS "callsetup" 0

このように着信音を送信しない端末では、応答操作後にはじめてSCOの音声パスが張られるのに対し、着信音送出端末では最初に音声パスが張られる様がわかります。

着信音を鳴らしてくれない端末の場合には、着信通知があったならばヘッドセット側で用意した着信音を鳴らす必要があります。着信音を送出してくれる端末をHFPでつないだ場合でも、W-SIMからの着信があった場合にはやはり着信音を鳴らす必要が生じますので、着信音鳴動機能はどうしたって必要になる機能であるといえます。そこで、本プロジェクトにおいては、BSIRの値にかかわらず着信音はヘッドセット側で生成して鳴らすことにします。端末側がSCOリンクを開いて着信音を送出してきても、ヘッドセット側で応答するまではそれを無視することにします。