2011/06/11

Android Accessory Protocolを使ってIDmを送ってみた

WinUSBは忘れて、Linuxで何か作ってみることにした。

私から見た感じでは、Android Accessory Protocolというのは、接続部分が主だ。
ホスト側は、接続されたUSB機器がAccessoryモードでなかったら切り替えるためのコマンドを送って切り替えさせる。
切り換わってベンダIDとプロダクトIDが特定の値になったら、あとはバルク転送を勝手にやってくれ、というイメージ。

アプリ側はインテントが飛んでくるので、それを受けてopenAccessory()しにいく。
うまくいけば、ディスクリプタを取得してストリームを開き、ホスト側とはストリーム経由で通信する。
ストリームで通信すると、ホスト側とはバルク転送が行われていることになる。

まあ、AccessoryChatがそういうアプリだったためかもしれないが、そう間違ってもいないだろう。
接続処理を書くのは面倒だが、そこはaccessorychatの処理をまるまる使えばいい。
そう、Linuxならね。


そんなわけで、以前作っていたLinuxで動くFeliCaライブラリ(PaSoRi or RC-S620/S)を動かし、取得したIDmをAccessoryChatに返すアプリを作ってみた。
まあ、うまくいきましたよ。
だってやってるのは、LinuxホストでIDmを取得して、それを文字列に置きかえて、バルク転送するだけだから。。。IDm取得を追加しただけで、accessorychatの元機能には変更なし。
簡単でしたわ。

Android側も変更して、直接FeliCaコマンドをバルク転送して、受け取ったデータをPaSoRiに転送するようにすることもできる。
そういうしくみを作れば、ホストになれないAndroidでもホストっぽく動くことができるだろう。

0 件のコメント:

コメントを投稿

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

注: コメントを投稿できるのは、このブログのメンバーだけです。