Data PDU(★)
[BLE(Bluetooth Low Energy)の開発依頼は、フィールドデザインまでお気軽にお問い合わせください。]
Data PDUは、データチャネル(37ch)でやり取りするパケットです。このチャネルでやり取りしているということは、すでに接続状態にあります。
Data PDUは、下記のフォーマットになりますが、LLIDによって、LL Control PDU(制御通信)と、LL Data PDU(データ通信)にさらにわかれます。
ユーザーが使っているようなアプリケーションデータは、LL Data PDUを使って送受信されます。
ヘッダー (2Byte) |
ペイロード (N Byte:種類によってさまざま) |
ヘッダーには、LLID(2bit)、Length(8bit)等が含まれます。LLID=11bの時は、LL Control PDUになります。LLID=10bの時は、LL Data PDUで、最初のL2CAPのパケットが入ります。LLID=01bの時は、LL Data PDUで、途中のL2CAPのパケットを示します。
LL Control PDUのフォーマット
LL Control PDUは、切断、接続情報の更新、暗号化などの制御を行うために使われます。
下記のようなフォーマットになっています。
OpCode (1Byte) |
パラメータ (0-26Byte) |
OpCodeの代表的なものは、下記になります。煩雑になるため、暗号関係のものは抜いてあります。
OpCode | 説明 |
LL_TERMINATE_IND | 切断するときに送る。パラメータには、1Byteのエラーコードを付ける。 |
LL_CONNECTION_UPDATE_REQ | 接続パラメータ(Connection Interval, Supervision Timeout等)を更新する時に送る。パラメータには、11Byteの更新する接続パラメータを付ける。Master側だけが送れる。 |
LL Data PDUのフォーマット
LL Data PDUは、ユーザーデータなどの通信に利用するL2CAPパケットを送る時に利用します。
L2CAPは、Version 3.0までのClassic Bluetoothでも使われています。しかし、Bluetooth Low EnergyでのCID(Channel識別子)を、Version 3.0までは使われていない0x04, 0x05, 0x06にすることで、同じL2CAPという呼び名であっても別のプロトコルに定義しなおしています。
Bluetooth Low Energyで使うCIDは、ATT(CID=004), Signaling(CID=0x05), SecurityManager(CID=0x06)だけです。
L2CAPのフォーマットは下記のようになっています。ここのCIDによって、Bluetooth Low Energyかどうかを分けています。結局、L2CAPの上にATT, Signaling, SecurityManagerの情報を載せてしまうので、L2CAPを使わないなど、もう少し考えようがあったと思います。
Length (2Byte) |
CID (2Byte) |
Payload (0-65535Byte) |