マイコン工作実験日記

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

AVRCP 1.3を試す -- その1

2011-02-02 22:16:32 | Weblog
USBドングルと東芝のBluetoothスタックの組み合わせでAVRCP 1.3が使えることがわかったので、WT32との接続実験をおこなってみました。以下は、全てWT32のシリアルポート上での表示、操作となります。

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の仕組みとその実際の動作を垣間見ることができ、なかなか楽しめます。