USBドングルと東芝のBluetoothスタックの組み合わせでAVRCP 1.3が使えることがわかったので、WT32との接続実験をおこなってみました。以下は、全てWT32のシリアルポート上での表示、操作となります。
USBのBTドングルをPCに挿すと、東芝ツールが自動的に登録済みのWT32に対してA2DPで接続してきます。そこで、WT32側からAVRCPの接続を張ってやります。
AVRCP 1.3の機能を試してみるために、まずは
このコマンドに応答があることを期待していたのですが、結果は↓のようにREJECTされてしまいました。これは対応する機能がサポートされていない場合の振る舞いです。そこで、続いて
最初に
続いて
試しに
再生モードの変更動作が確認できたので、次は一番試してみたかった曲目のメータデータの受信です。
日本語の部分はUTF8になっていました。
最後に
AVRCPの仕組みとその実際の動作を垣間見ることができ、なかなか楽しめます。
USBのBTドングルをPCに挿すと、東芝ツールが自動的に登録済みのWT32に対してA2DPで接続してきます。そこで、WT32側からAVRCPの接続を張ってやります。
AVRCP 1.3の機能を試してみるために、まずは
AVRCP PDU 10 3を投入。これは、プレーヤ側が通知可能なイベントを列挙することを要求するためのコマンドです。PDU (Protocol Data Unit)という用語が示しているように、このコマンドではAVRCPプロトコル上で運ばれるデータをパラメータとして指定してやります。そのため操作の際には、コマンドの引数を調べるためにAVRCPの仕様を読みながらとなります。
このコマンドに応答があることを期待していたのですが、結果は↓のようにREJECTされてしまいました。これは対応する機能がサポートされていない場合の振る舞いです。そこで、続いて
AVRCP PLAYという再生指示のコマンドを送ってみると、PC側ではWMP (Windows Meida Player)が自動的に立ち上がって、再生を開始してくれました。なかなか、洒落たことをしてくれます。
最初に
AVRCP PDU 10 3を入力した時点ではWMPが動作していなかったので、もう一度同じコマンドを投入してやると、今度はちゃんと応答が返ってきました。どうやらAVRCP 1.3に関連する機能はWMPに対するプラグインとして用意されているらしく、そのためにWMPが起動されていることが必要なようです。
続いて
AVRCP PDU 11を送り、アプリ側がサポートしている属性を調べてみると、再生モードとしてリピートとシャッフルの設定変更が可能であることがわかりました。
AVRCP PDU 12でそれぞれの属性に設定可能な値を調べ、
AVRCP PDU 13で現在の設定値を調査。再生リストの曲目の再生が終了すると、最初に戻って再生するリピートモードになっており、シャッフルは禁止されていることがわかります。
試しに
AVRCP PDU 14を使ってシャッフルの設定を変更、確認してみた様子が↓です。
再生モードの変更動作が確認できたので、次は一番試してみたかった曲目のメータデータの受信です。
AVRCP PDU 20 0を送ると、再生中の曲について、プレーヤ側がサポートしている全データ項目を返してくれます。
日本語の部分はUTF8になっていました。
最後に
AVRCP PDU 30で再生ステータス確認。
00 04 a3 72の4バイトが曲の長さをms単位で表現しており、303.986秒に相当します。続く4バイトが現在の再生位置。そして最後のバイトは再生中は1, 停止中は2となります。
AVRCPの仕組みとその実際の動作を垣間見ることができ、なかなか楽しめます。
コメントありがとうございます。
SCMS-Tに関しては意識したことがありません。「バージョン4.0以降」というのは、何のバージョンのことでしょうか? 東芝スタックのバージョンのことでしょうか?東芝スタックを使っていた、Windows XPのマシンは1年以上前に壊れてしまい、それ以降 東芝のBluetoothスタックも使っておらず、USBドングルも行方不明になってしまいました。そんなわけで、今となっては再現試験をすることもできません。スタック自体はバッファローのドングルに付属のものを使ったのですが、そのスタックのバージョンが古かったとか、OEM用にSCMS-Tが外してあったということがあったのかもしれません。
お役にたてず、すみません。
東芝のスタックを使用されているとの事ですが、バージョン4.0以降ですと
scms-tが機能して接続できないはずです。
どのように切り抜けているのでしょうか?
ご教示いただけるとありがたいです。