2011/05/21

Arduinoも3.1も持っていない場合はどうしたものか

Open Accessory APIが追加されてよかったものの、うちにはAndroid2.3.4の環境くらいしか作れない。
2.3.4は、Hostにはなれない。
うーん・・・

まずは、android developersのブログを読んでみよう。

Open Accessory APIは、ライセンスなしでUSBアクセサリをAndroid3.1や2.3.4につなぐことができる。
新規の「アクセサリモード」はUSBホストになるAndroid端末はなくてもよい。
USBプロトコルは非対称(ホストと非ホストの通信になるから)。
パソコンだと、PCがUSBホストになり、それ以外のマウスやプリンタなどの非ホストデバイスがつながる形だ。

USBホストは2つの大きな役割がある。
まず、バスマスタになってデータの流れを制御する役割。
それと、電源を供給する役割。

Androidが従来のやり方でUSBアクセサリに対応するのには、問題があった。
それは、いくつかのデバイスがホストモードをサポートしているというものだ。
解決するために、こうした。
アクセサリモードでは、Android側がUSBデバイスとして振る舞い、アクセサリがUSBホストとして動く。
つまり、アクセサリ側がバスマスタになり、電源を供給するということだ。

まあ、そういうことらしい。
バスマスタ機能と電源供給は、USBホストになるものであれば持っているだろう(USBはよく知らんが)。
あとは、USBアクセサリとして動くAndroidとどうやって通信したらいいんだ?ということだ。
そうか・・・だから次の「Establishing the Connection」があるのか。。。

接続の確立
Open Accessoryの構築は、USBホストとして動いて電源供給できるなら簡単。
VIDは0x18d1、PIDは0x2d01か0x2d00。

簡単らしいから、省略だ。
VIDはAndroidのものなのだな。

;Google NexusOne
%SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_0D02


こんなものがあるので、気になってはいたのだ。
PIDは・・・気にすまい。

とにかく、2.3.4はホストになれないのであれば、一番身近なホストは誰だ?
PCだろう。
なので、一番よく使っているOpen Accessoryはadbなんじゃなかろうか?
ほら、API12のサンプルにもAdbTesってのがあるではないか。
昔から温めてきたものを整備して出した、というところなのかしら。
まあ、動かしてないので推測なんだけどね。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。