マイコン工作実験日記

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

最新の画像もっと見る

2 コメント

コメント日が  古い順  |   新しい順
Re: Unknown (sirius506)
2012-10-08 22:20:59
nishiさん、

コメントありがとうございます。

SCMS-Tに関しては意識したことがありません。「バージョン4.0以降」というのは、何のバージョンのことでしょうか? 東芝スタックのバージョンのことでしょうか?東芝スタックを使っていた、Windows XPのマシンは1年以上前に壊れてしまい、それ以降 東芝のBluetoothスタックも使っておらず、USBドングルも行方不明になってしまいました。そんなわけで、今となっては再現試験をすることもできません。スタック自体はバッファローのドングルに付属のものを使ったのですが、そのスタックのバージョンが古かったとか、OEM用にSCMS-Tが外してあったということがあったのかもしれません。

お役にたてず、すみません。


返信する
Unknown (nisi)
2012-10-08 21:55:16
いつも興味深く拝見させていただいております。

東芝のスタックを使用されているとの事ですが、バージョン4.0以降ですと
scms-tが機能して接続できないはずです。
どのように切り抜けているのでしょうか?

ご教示いただけるとありがたいです。
返信する

コメントを投稿

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