Bluetooth 関連のプロジェクトに取り組んでいると、なぜ一度に最大 20 バイトのデータが送信されるのかが気になる方も多いと思います. 早速ですが、上の画像と、下の画像が Bluetooth のデータのパケット構造です。伝染 ; 感染。赤い部分は、(Notify 状態で) 送信した最終的なパケット サイズです。
始める前に、オクテットとバイトの違いについて触れておきますが、どちらもバイトに変換できます。オクテットはオクテットのグループです。TCP/IP 開発の初期には、一部のシステム構造で使用されるバイトは 10 ビットでした。
ブロードキャスト パケットの概要
ブロードキャスト パケット ヘッダー
ヘッダー部分
- ヘッドは主に 1 オクテットです。
- PDU タイプ
- RFUは予約されています
- TxAdd 送信アドレス セグメント
- RxAdd はアドレス セグメントを受け入れます
長さ部分
- 長さは主に 1 オクテットです。
- 6octet は長さで、値は 6 ~ 37 です (ブロードキャスト パケットは最後に 6octet のデバイス アドレスがあるため、少なくとも 6 ビットです)。
ここでの 37 バイトについては、31octet の長さのデータ PUD 内の 5 ビット データと追加する必要があるデバイス アドレスと互換性を保つために、これが正しいかどうかはわかりません。 6オクテットで。
ブロードキャスト データ セクション
データは有効データと無効データ(0埋め)+6octetのデバイスアドレスに分けられます。有効なデータ構造は次のとおりです。
- 有効なデータ部分は、複数の AD 構造で構成されています
- 1 AD 構造は、1 octct の長さとデータ (Length) で構成されます。
- データは、AD タイプ (n octct) と AD データ (長さ - n) で構成されます。
データ PDU
頭
- 長さは 0 ~ 31octct の 5 桁で、最大は 31octet です。
- 4octet の MIC を引く 31-4 = 27 オクテットがペイロード長です。
リンク層 L2CAP
27 - 2 - 2 = 23 オクテット
通知する
23 - 1 - 2 = 20オクテット。