マイコン工作実験日記

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

SDPの違いは動作の違い

2011-12-18 12:58:47 | WT32/BM20
iWRAP4.0.1を導入して、すぐと気がついたことがあります。それは、やはりAVRCPに関する動作でした。今回の記事では、WCA-009を使って動作の違いを確認するとともに、その原因を探ってみることにしまいた。

まずは、どこが違ったのかの説明から。iWRAP4.0.0ではiPadからBluetoothの接続をおこなうと、次のようにWT32上にイベントが表示されました。

それが、iWRAP4.0.1ではこのようになります。

一目瞭然、iWRAP4.0.1ではA2DPだけでなく、AVRCPについても接続されています。本来、こうあって欲しかったのですが、iWRAP4.0.0ではA2DPはつながるものの、AVRCPはつながりませんでした。しょうがないので、callコマンドを使うことでWT32側からAVRCPのリンクを張っていました。どちらの場合も、iPad側はiOS 5.0ですので、この動作の違いが生じる要因はWT32側にあることになります。iPad側から接続手続きが始まっているので、AVRCPのプロトコル動作が原因では無いということもわかります。すると、原因はWT32が公開しているSDP情報の違いに起因していると推測することができます。

と、いうわけで、WT32が提供しているSDP情報を調べてみることにします。使うのはいつものようにLinux上のsdptoolです。まずは、iWRAP4.0.0の場合。

そして、こちらがiWRAP4.0.1の場合。

ほとんど同じような内容ですが、よく見るとiWRAP4.0.0ではA/V Controller ServiceにおいてService Class ID Listが含まれていなかったことがわかります。つまり、iPadではこのService Class IDを確認してAVRCP接続を起動するかどうかを判断していたのですね。実はiWRAP4.0.0を使った場合でも、AVRCPをtarget側に設定した時にはちゃんとService Class ID Listは出ていました。ですから、controller側でSerivice Class IDが出ていなかったのは、iWRAP4.0.0でのバグだったのですね。

iWRAP4.0.1でつないだ場合にAVRCP GET_CAPABILITIES_RSP REJというイベントが表示されていますが、この意味するところは、今のところ不明。avrcp pduコマンドをつかってGET_CAPABILITYを送ってみると、サポートするイベントはちゃんとひろうことができています。iWRAPのAVRCPスタックが自動的に何やらリクエストを送っているのでしょうが、それが何なのかはわかっていません。

最新の画像もっと見る

コメントを投稿

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