BLE(BlueTooth Low Enegy)の仕様をざっくり理解したのでまとめておきます。
BLEの通信はCentralとPeripheralと言う二種類のロール(役割)に分かれて行われます。
既存の概念で言えば「クライアント・サーバー」モデルに似ています。
Centralがサーバーで、peripheralがクライアントと言った感じです。
例えばiBeaconの場合、
iBeacon端末がperipheralで、iPhoneがCentralとなります。
※ちなみにiBeaconはBLEの仕様に則ってAppleが提供する独自のサービスです。BLE=iBeaconではありません。
イメージ的にはBLE>iBeacon(BLEにiBeaconが含まれる感じ)
で、peripheralとCentralがそれぞれ何をするかと言うと、
peripheralはAdvertisingによって、自分の存在を周囲に発信します。
逆に、CentralはAdvertisingを受信し、その中から目的のperipheralをScanします。
更に、Centralは目的のPeripheralを見つけると、Connectionを確立し、
Peripheralから送信される情報を受信し、任意の処理を実施します。
必要があれば、処理結果をPeripheralへ返却する事も出来ます。
尚、Perepheralから送られる情報単体はcharactaristicと呼ばれる文字情報です。
それを目的別にまとめたものがServiceと呼ばれます。
ちょうど、Object志向プログラミングで言うクラスとプロパティの関係の様なものです。
また、それぞれのServiceやCharactaristicにはそれぞれUUIDが振られています。
これらの一連の処理を簡易に実装できるフレームワークがAndroidにもiOSにもあります。
その内容については次回。