MIDIAndBlue 基本設計前のクラス図の???

あまり学問的なことはわからないのですが、基本設計前のクラス図をつくるまえの段階の原稿になります。

MIDIAndBlueというリポジトリをGitHubにつくったところです、現状のMIXandCCで使われている、BlueTooth関連の基本ライブラリです。リポジトリを作っただけで、ファイルはまだコピーしてないのですが。

助長にした呼び名は、MIDI, Android, Bluetoothです。8割完成していますが、Threadへの一元化と、ステータスと管理と、ステータスへのリスナーの登録をしたら、公開しようと思っています。

MIDIAndBlueメイン

メンバーのクラスは、MABThread, MABDeviceList, MABMessageFactory。
ほかのクラスは適時生成。

pickBluetooth, scanBluetooth, openBluetooth, registerBluetoothなどがあります。
なかでも、registerBluetoothは、BluetoothDevice, Name, Address, Statusをパラーメータにもち、リストとコンテンツ情報を更新します。
MABThreadBluetooth通信用スレッド

Start、Waiting、Freeze の3つの状態をもちます。
Runnbleを順次処理していきます。
Startされると、Runnableを単一スレッドから実行していき、双方向通信が必要な場合には、Waitingステータスにきりかえ、レスポンスがあった段階で、Startに戻します。
Waitingの場合、メインスレッドは、次のRunnableの処理をせず、Startされるまで待機します。

メンバーのクラスは、MABReader, MABWriter
MABDevice,
MABDeviceList
デバイスと、その一覧を管理します。
BluetoothDevice, NAme, Address, Statusを保持しています。

また、DeviceInfoUpdateListenerをもちます。
MABStatus?
MABErrorCode?

MABCodes
MABDeviceの状態コードで定数管理します。以下の2つが主です。
SearchStatus { scan, bond, other, lost }
OpenStatus { opened, closed, opening, closing }
MABMessage,
MABMessageDispatcher,
MABMessageFactory
data (byte[]), offset, length などを保持する、メッセージを意味するクラスと、
そのまま、dispatchMesssge(MABMessage)をメソッドにもつDispatcherです。
また、MABMessageFactoryは、ガーベージコレクタ回避のための、キャッシングをします。

MABMessageDispatcherは、インターフェースとして、MABMessageを1つわたせる、dispatchMessage(MABMessage) メソッドだけをもつ、いわゆるストリームです。処理用パイプとなります。
MABWriterMABMessageを書き込むためのクラス。
MABMessageDispatcherの実装のひとつ

MABMessageをプールすると、MABThread経由で、BLE-MIDIデバイスにMIDIシグナルを送信します。

startTransmitter, stopTransmitter, dispatchMessage(MABMessage)
MABReaderMABMessageを読み込むためのクラス。

pushData(byte[] data, int offset, int length)から、
MABMessageのリストをつくり保持します。

startParserThread, stopParserThread
MABMesage getNextMessage()、boolean waitNextMessage(int timeout), など

bindFromReaderToStreamAsThread なんていうコンセプトのヘルパークラスも作るとか作らないとか。
MABHelperUUIDの生成とか、Intentのコードの管理ですかね。
MABConnectionCallbackBLEの接続まわりをあつかう、Callback用のクラスです。
MABLauncherForDevicesMIDIAndBlueおよび、Activity(Context)をもとにした、コンストラクタを持ちます。

Intentを実行をつかさどるので、Activitiyのメンバーとして、OnCreateの前にオブジェクトを生成することで、
checkPermission, grantPermission,
launchPicker, launchScanner, startOpenDevice,
launchLoggerView, launchDeviceListView などを持ちます。
そのさいの遷移先については、記述はしません。
タイトルとURLをコピーしました