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)を取り込み、プリンターにて即座に印字する装置にしてみましたー。実際のところ印刷速度的に追いつかないので長くやってるとバッファが一杯になります^^;
動画はこちらですー。
組み込み機器へのUSBホスト実装技法―パソコン用USB周辺機器を組み込みマイコンから自在に使いこなす (TECH I BUS Interface)
posted with amazlet at 11.05.22
CQ出版
売り上げランキング: 223552
C言語ではじめる PIC24F活用ガイドブック
posted with amazlet at 11.05.21
後閑 哲也
技術評論社
売り上げランキング: 187683
技術評論社
売り上げランキング: 187683



