SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

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

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

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

前編はこちらから。

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などと使い分けることができます。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
Host層(続き)

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Webアプリケーション開発技術の新潮流スタディーズ連載記事一覧

もっと読む

この記事の著者

鳥居 陽介(株式会社ワークスアプリケーションズ)(トリイ ヨウスケ)

株式会社ワークスアプリケーションズ所属。イケてるアプリケーションを死ぬほど楽に作るために研究を続ける日々。社内での立ち位置は「フロントエンドのナウい人」。最近エバンジェリストという肩書きが付いた。趣味は作曲とスノーボード。 Blog: http://jinjor-labo.hatenablog.com/ ...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9492 2016/07/25 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング