Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

IoT技術の代表「BLE:Bluetooth Low Energy」の動作原理を理解してみよう【後編】

Webアプリケーション開発技術の新潮流スタディーズ 第6回

  • LINEで送る
  • このエントリーをはてなブックマークに追加

 本稿は「IoT技術の代表『BLE:Bluetooth Low Energy』の動作原理を理解してみよう(前編)」の続きです。BLE(Bluetooth Low Energy)はその消費電力の小ささから、IoTで使用される無線技術の有望株を目される技術です。前編では、BLEの概要とアーキテクチャの全体像を確認した上で、無線通信で相手とやり取りする物理層と、それを制御するリンク層で構成される「Controller層」を説明しました。今回は、残り2つの層である「Host層」と「Application層」について解説します。

目次

前編はこちらから。

Host層

Attribute Protocol(ATT)

BLEでは Attribute Protocol(ATT) というプロトコルに従って、Client/Serverアーキテクチャを実現します。 多くのアプリケーションではPeripheralがServer、CentralがClientになりますが、必ずしもそうである必要はなく、逆でも構いません。

ClientとServerそれぞれが所有するデータは、AttributeというKey-Valueの集合で管理されています。 各Attributeは次の4つの値で構成されます。

説明
Handle
(attribute handle)
連番のインデックス。値の範囲は0x0001から0xffff(2 octets)まで
Type
(attribute type)
Attributeの型を表す128bitのUUID。Bluetooth SIGが定義しているものに関しては、次のxxxxに入る16bitの値だけで表すことができる。0000xxxx-0000-1000-8000-00805F9B34FB
Value 属性値。サイズは512バイトまで
Permission 読み書きの権限。値の意味はAttribute Protocolではなく上位層(GATT)で決められる

各Attributeの値を読み書きするために、ATTでは次の3つの機能を提供しています。

Find AttributeのHandleなどの取得
Read Attribute値の読み取り
Write Attribute値の書き込み

アクセス方式

ATTではAttributeにアクセスするために、6種類のメソッドが提供されています。

Request クライアントからサーバにデータを要求する
Response Requestに対する応答
Command クライアントからサーバに命令を送る。返答は要求しない
Notification サーバからクライアントに通知を送る。受け取りの確認は必要ない
Indication サーバからクライアントに通知を送る。受け取りの確認が必要
Confitmation Indicationを受け取ったことの確認をクライアントからサーバに送信する
6種類のメソッドの動作イメージ
6種類のメソッドの動作イメージ

Request/ResponseとIndication/Confitmationはそれぞれ対でトランザクションになります。 クライアントとサーバが同時に持てるトランザクションは1つまでで、トランザクションが完了するまで次のRequest(Indication)を送ることはできません。 このシンプルな仕組みによって、フロー制御やロック機構を実装する必要性はありません。

一方、CommandとNotificationはトランザクションを持たず、任意のタイミングで送信することができます。 フロー制御がないため、大量のコマンドを送受信して処理が追いつかない場合の振る舞いを上位層で決めておく必要があります。

Attribute値の読み取り機能であるFindやReadは値の返却を待つため、アクセス方法はRequestやIndicationになります。 Writeの場合は確認が必要な場合はRequest、必要ない場合はCommandなどと使い分けることができます。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

バックナンバー

連載:Webアプリケーション開発技術の新潮流スタディーズ

おすすめ記事

All contents copyright © 2006-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5