Bluetooth
短距離無線な通信規格
本部
https://www.bluetooth.com
技術文章とか
https://www.bluetooth.com/specifications/specs/
割り振り番号とか https://www.bluetooth.com/specifications/assigned-numbers/
読み方 https://qiita.com/k-yamada-github/items/14e77fac77792610c20f
コアの仕様 https://www.bluetooth.com/specifications/specs/core-specification-5-3/
Bluetooth LE
参考資料
入門のとっかかり
BluetoothLEのコアを解説してる物
GATTの構造
UnityのAssetとしては、これの記述をよく見かける。気がする
Bluetooth LE for iOS, tvOS and Android
用語メモ
セントラル
データ受信側。PCとか。通信的にはクライアントっぽい
ペリフェラル
データ送信側。センサーとか。通信的にはサーバーっぽい
アドバタイズ
ペリフェラルが通信待ち受けになる行為
マウスとかのいわゆるペアリング待ち状態がこれ
RSSI
電波強度
サービス、Characteristic
データをやり取りする単位のような物
セントラル側でペリフェラルを探した時、大量にヒットするので、サービスUUIDでフィルタしたりする
ペリフェラル1つにつき複数のデータをやり取り出来るためか、CharacteristicにもUUIDが振られてる
GATT サブプロシージャ
https://techweb.rohm.co.jp/iot/knowledge/iot02/s-iot02/04-s-iot02/3592
GATT機能とは、GATTに基づくデータのやり取りのための手順で、ATTが提供する様々な操作に基づいています。機能(プロシージャ:Procedure)にはサブプロシージャ(Sub-procedure)があり......
ボンディング
https://fielddesign.jp/technology/ble/blespec_pairing/
ペアリングで交換した鍵を保存することです。ボンディングをしておけば、次回に同じ相手と接続するときに、ペアリングの処理は行わないで、前回に使った鍵をそのまま使い、データを暗号化できます。
通信の流れ
ペリフェラル側でサービスを起動
ペリフェラル側でアドバタイズを実行
セントラル側でスキャン実行
セントラル側でコネクト実行
切断時にディスコネクトを実行
プロファイルとサービス
プロファイル=通信規約、TCP/IPみたいなやつだと思えば良さそう
その中で、GAP/GATTプロファイルが、汎用性が高くてよく用いられているっぽい?
サービス = GAP/GATTプロファイルを使った仕様のこと?
公的なサービスUUIDの一覧
https://btprodspecificationrefs.blob.core.windows.net/assigned-values/16-bit%20UUID%20Numbers%20Document.pdf
UUIDの読み方