2011年06月05日

組み込み用ADB実装のmicrobridgeをUSB搭載PICで使用する

Arduino + USB HOST Shield用のAndroid Debug Bridge(ADB)実装である、MicroBridgeをPIC24FJ64GB002用にポーティングしてみました。

ADBの通信は、通常Android端末とPCとを接続してログの取り出しや、Android上のシェル操作、アプリのデバッグ等に使用します。このプロトコルがMicroBridgeに内包されているので、Androidの古いバージョンの端末とでもやりとりできます。(例:Android 1.6等)

adbコマンドの一つ、adb forwardを使用すると外部機器とAndroid内部アプリがソケット通信の口で繋がるようになるはずですので端末バージョンを限定しないADKのような使い方が出来るかと期待してます。
実は僕はAndroid 1.6のIS01を持ってまして、それを使って外部機器連携ができるので楽しみです。
MicroBridgeは、日本Androidの会・横浜支部いわたんさんの記事や、同会・神戸支部dietposterさんから話を伺って興味を持ち、今回ご紹介しているPIC化プロジェクト始まってます^^;

Google code : microbridge
http://code.google.com/p/microbridge/

いわたんlab日記:AndroidとArduinoをUSBホストシールドでつなぐ(非ADK編)
http://iwatanlab.blogspot.com/2011/05/androidarduinousbadk.html

まとめると、MicroBridgeがあれば、ADKに対応してないAndroid端末でもUSBで繋げられるよ!ということです。

さて、今回はMicroBridgeをPIC用にポーティングしました。主に、USB Host ShieldのUSBスタックと繋がるところをPIC用に変更し、C++実装だったのをC化し、その他いろいろ^^;といじりました。
もともとArduino用なので、スケッチから簡単に呼び出せるようになっているのですが、そこはほぼ同等のAPIを踏襲出来てます。
今回の実験では、MicroBridgeとのやりとりはこの程度の内容で出来ます。


int main(void)
{
Connection* c;

// PICペリフェラル初期化等
initPeripheral();

ADB_init();
c = ADB_addConnection("shell:exec logcat", true);

while (1){
ADB_poll(c);
}
}

void adbEventHandler(Connection * connection, adb_eventType event,
uint16_t length, uint8_t * data)
{
if (event == ADB_CONNECTION_RECEIVE){
printout(data,length); // プリンタで印字する
}
}



ソース等は日本Androidの会・神戸支部の共有リポジトリか何かで共有し、OSSの扱いにさせていただきまーす。
(整理してから...^^;)

とりあえずなんか動く実験を、と思い、Android端末からログ(adb logcat)を取り込み、プリンターにて即座に印字する装置にしてみましたー。実際のところ印刷速度的に追いつかないので長くやってるとバッファが一杯になります^^;
R1205956.JPG

動画はこちらですー。







C言語ではじめる PIC24F活用ガイドブック
後閑 哲也
技術評論社
売り上げランキング: 187683

posted by いしいっち at 12:37| Comment(1) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
ポーティングしちゃうなんて素晴らしいです!
Posted by いわたん at 2011年06月05日 12:49
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。