UnaLunaライブラリの設計

Androidマイコンをつなぐ道がUSBであれ、Bluetoothであれ、WiFiであれ、アプリレベルでは同じように扱えるべきなんじゃないかとふと思いました。抽象的にはAndroidマイコンがデータの送信/受信をすることにかわりはないんですから。


...という話をしていたら、「AndyLibというのがすでにあるぞ」というツッコミをいただきました。不勉強ですみません。(;^_^A アセアセ
https://code.google.com/p/android-jp-kobe/downloads/list


たしかに、通信手段の包括という点ではまさに僕の意図したものでした。ただ、AndyLibはそれにとどまるものではないようです。AndyLibはデータのプロトコルをも規定しており、I/Oレジスタ空間の読み書きのような感覚で、お手軽にAndroidからマイコンへのアクセスができるのです。


なるほど、これは良いアイデアだと思うけど、僕がやりたかったことからは少しずれます。僕はただ通信経路の抽象化がしたいだけで、ペイロードはフリーフォーマットにしたいのです。バイナリ形式で大量のデータを送りたい場合もあるでしょうし、アスキー形式のほうがコンソールから手入力できて扱いやすいという場合もあるでしょう。というわけで、先人の仕事をリスペクトしつつ、僕は僕の欲する仕様のものを作っちゃおうと思います。名付けてUnaLunaライブラリ。(名前の意味についてはまたいつか。)


対応する通信のモードは下図の4通りとします。Dataの中身はフリーフォーマットで使う人次第です。

通信モード



また、通信経路は、ADK、microbridge、FTDriver、Bluetooth(SPP)、WiFi(TCP/IP)を想定します。これらを抽象化した通信ポートクラス「LunaPort」を設計し、各通信経路のラッパをその派生クラスとして実装します。これにより通信経路のすげ替えが容易にできるはずです。
↓クラス図を描くとこんなかんじ?
クラス図