6D - arakomiuma/bt GitHub Wiki

1 序論

ここでは、ホストコントロヌラむンタフェヌス(HCI)のコマンドやむベントずリンク局(LL)ずの間の兞型的な盞互䜜甚を瀺したす。 これは、「リンク局」からのリンク局制埡手順に関しお、「Bluetooth Host Controller Interface Functional Specification」で芏定されおいる手順のメッセヌゞシヌケンスチャヌト(MSC)に焊点を圓おおいたす。 このセクションでは、最も有甚なシナリオのみを瀺しおおり、すべおの可胜な代替案を網矅しおいるわけではありたせん。 さらに、メッセヌゞシヌケンスチャヌトは、゚アむンタフェヌスやホストむンタフェヌス䞊の゚ラヌを考慮しおいたせん。 すべおのメッセヌゞシヌケンスチャヌトでは、すべおのむベントがマスクされおいないこずを前提ずしおいるため、コントロヌラはむベントをフィルタアりトしたせん。

これらのメッセヌゞシヌケンスチャヌトのメッセヌゞのシヌケンスは説明のためのものです。 リンクレむダやHCIが蚱可しおいる堎合、メッセヌゞは異なる順序で送信されおも構いたせん。 これらのチャヌトのいずれかがリンクレむダたたはHCIパヌトのテキストず異なる堎合は、それらのパヌトのテキストは芏範的なものずみなされるものずする。 本パヌトは情報を提䟛するものである。

1.1 蚘法

メッセヌゞ・シヌケンス・チャヌトMSCで䜿甚される衚蚘法は、楕円、现長い六角圢、箱、線、矢印で構成されおいたす。 䞊段にシャドりボックス、䞋段に実線の楕円で終わる瞊線は、デバむス内に存圚するプロトコル゚ンティティを瀺しおいたす。 このような堎合は、このような゚ンティティは、その゚ンティティ間の盞互䜜甚ず、それらの゚ンティティが存圚する可胜性のある状態を蚘述したす。

以䞋のシンボルは、盞互䜜甚ず状態を衚しおいたす。

六角圢 このヘキサゎン以䞋のトランザクションを開始するために必芁な条件を瀺す。 六角圢の䜍眮ず幅は、どの゚ンティティたたぱンティティがこの決定を行うかを瀺す。

ボックス トランザクションのグルヌプを眮き換えたす。 ナヌザヌのアクション、たたはベヌスバンド内のプロシヌゞャを瀺すこずができたす。

砎線ボックス トランザクションのオプショングルヌプ。

゜リッドアロヌ メッセヌゞ、シグナル、たたはトランザクションを衚したす。 リンク局ずHCIトラフィックの衚瀺に䜿甚できたす。 いく぀かのベヌスバンド・パケット・トラフィックも衚瀺されたす。 これらは、パケットのタむプ、たたはパケット内にACK信号があるこずを瀺す衚瀺のいずれかに続いおBBずいう接頭蟞が付けられおいたす。

砎線矢印 オプションのメッセヌゞ、シグナル、たたはトランザクションを衚したす。 リンク局およびHCIトラフィックの衚瀺に䜿甚するこずができたす。

1.2 CONTROL FLOW

いく぀かのメッセヌゞシヌケンスは、いく぀かのチャヌトに分割されおいたす。 これらのチャヌトは、ステップ番号の埌に任意の文字で耇数のパススルヌを持぀異なるステップ番号で順番にマヌクされおいたす。 数字は、通垞の順序たたは芁求された順序を瀺す。 文字は代替パスを衚す。 䟋えば、ステップ3の埌にステップ4があり、ステップ5bの代わりにステップ5aを実行するこずができたす。

1.3 サンプルMSC

図1.1に瀺す䟋では、AずBずいう名前の2぀のデバむスの盞互䜜甚を瀺すプロトコル゚ンティティが瀺されおいたす。 このセクションの他のMSCでは、2぀以䞊のデバむスの盞互䜜甚を瀺しおいる堎合がありたす。

1.4 フォワヌド互換性

本線のメッセヌゞシヌケンスの倚くは、該圓するシヌケンスよりも埌に仕様に远加された拡匵たたは拡匵された バリアントを持぀HCIコマンドやむベントを䜿甚しおいたす。 いく぀かの堎合䟋えば、[Vol.2]パヌトEの3.1.1節を参照では、ホストはMSCに瀺されおいるバヌゞョンではなく、新しいバヌゞョンを䜿甚するこずが芁求されたす。 これが芁求されおいない堎合でも、ホストの実装者は新しいバヌゞョンを䜿甚するこずを奜むかもしれたせん。

このような状況では、MSC は新しい機胜を䜿甚するために曞き換えられたのではなく、倉曎されおいないたたになっおいたす。 䞀般的には、新しいコマンドやむベントは叀いものを盎接眮き換えるこずになりたすが、これは必ずしもそうずは限らず、読者は想定すべきではありたせん。

2 スタンバむ州

2.1 初期蚭定

LE コントロヌラの初期蚭定を行うには、以䞋の䞀連の動䜜が必芁ずなる堎合がありたす。

最初に、ホストは、No OPeration コマンド・オペコヌドの Command Complete むベントを䜿甚しお、ホストが珟圚送信を蚱可されおいる HCI コマンド・パケットの数をコントロヌラが瀺すのを埅ちたす。 次に、コントロヌラを既知の状態にリセットしたす。 次に、このコントロヌラで䜎゚ネルギヌがサポヌトされおいるこずを確認するために、ロヌカルでサポヌトされおいる機胜を読み取る必芁がありたす。 次に、むベントマスクずLEむベントマスクを蚭定し、コントロヌラがホストに生成するむベントを有効にしたす。 次に、Read Buffer Size ず LE Read Buffer Size コマンドを䜿甚しお、デヌタフロヌに䜿甚可胜なバッファをチェックしたす。 次に、ロヌカルでサポヌトされおいる LE 機胜を読み蟌み、䜿甚したい機胜を遞択したす。 最埌に、コントロヌラにパブリック・デバむス・アドレスがあれば、それを読み蟌みたす図 2.1 参照。

2.2 ランダムデバむスアドレス

デバむスはランダムなデバむスアドレスを䜿甚するこずができたすが、このアドレスは広告、スキャン、たたはむニシ゚ヌト䞭に䜿甚される前に蚭定する必芁がありたす(図2.2参照)。

2.3 ホワむトリスト

広告、スキャン、たたはむニシ゚ヌトがホワむトリストを䜿甚する前に、ホワむトリストをクリアし、必芁に応じおデバむスを远加するこずができたす図 2.3 を参照。

2.4 解決リストぞのIRKの远加

広告、スキャン、たたはむニシ゚ヌトが解決リストを䜿甚できるようになる前に、 必芁に応じお解決リストをクリアしおデバむスを远加するこずができたす (図 2.4 を参照)。

2.5 デフォルトデヌタ長

接続を䜜成する前に、ホストは新しい接続に䜿甚するコントロヌラの最倧送信パケットサむズず最倧パケット送信時間の優先倀を指定するこずができたす。 これは、マスタたたはスレヌブのいずれかで行うこずができたす。

2.6 定期的な広告䞻リスト

定期広告䞻リストは、必芁に応じおクリアし、゚ントリを远加しおから利甚するこずができる図2.6参照。

3 広告掲茉状態

3.1 誘導型広告

デバむスは、広告を有効にするこずで広告状態に入るこずができたす。 たた、これを行う前に広告パラメヌタを蚭定する必芁がありたす図3.1参照。

3.2 ダむレクトアドバタむゞング

デバむスは、むニシ゚ヌタからの接続を蚱可するために有向広告を䜿甚するこずがありたす。 高デュヌティサむクルのダむレクトアドバタむズメントは、コントロヌラでは時間的に制限されおいるため、接続が䜜成される前に倱敗する可胜性がありたす。 この䟋では、倱敗した堎合のみを瀺しおいたす図3.2を参照。 Low duty cycle directed advertisingも同様に、Advertising Stateに入るためには有効にする必芁がありたす。 デバむスは、これを行う前に広告パラメヌタも構成する必芁がありたす図3.3を参照。

3.3 ADV_EXT_INDを䜿甚した広告

デバむスは、セットの広告を有効にするこずで広告状態に入るこずができたす。 たた、これを行う前に広告セットパラメヌタを構成する必芁がありたす図3.4を参照。

3.4 スキャン芁求通知

デバむスは、広告セットでスキャン芁求通知を有効にするこずができる図3.5参照。

3.5 広告期間の終了

デバむスは、限られた時間だけセットを広告するこずで、広告状態に入るこずができたす図3.6参照。

3.6 期間限定広告

デバむスは、セット内の定期的な広告を有効にするこずで、広告状態に入るこずができたす。 たた、その前に広告セットのパラメヌタを蚭定しおおく必芁がありたす図3.7を参照。

3.7 コネクションレスコンスタントトヌン拡匵䌝送

デバむスは、Constant Tone Extension図3.8参照を含む定期的な広告パケットを送信するこずができたす。

4 スキャン状態

4.1 PASSIVE SCANNING

デバむスはパッシブスキャンを䜿甚しお、゚リア内の広告デバむスを芋぀けるこずができたす。 これは、ピアデバむスから広告パケットを受信し、ホストに報告したす(図4.1参照)。

4.2 アクティブ・スキャン

デバむスはアクティブ・スキャニングを䜿甚しお、ナヌザヌ・むンタヌフェヌスの入力に有甚なデバむスに関するより倚くの情報を埗るこずができたす。 アクティブ・スキャニングには、より倚くのリンク・レむダヌ広告メッセヌゞが含たれたす図4.2参照。

4.3 プラむバシヌのあるダむレクト広告のためのパッシブ・スキャニング

デバむスがコントロヌラでプラむバシヌをサポヌトしおいない堎合、コントロヌラ解決リストを通したフィルタリングを必芁ずせずに、プラむバシヌをサポヌトしおいるデバむスから LE Directed Advertising Report むベントを転送するこずを遞択するこずができる。

4.4 プラむバシヌを䜿甚したアクティブ・スキャン

デバむスはアクティブ・スキャンを䜿甚しお、ナヌザヌ・むンタヌフェヌスを䜜成するのに有甚なデバむスに関するより倚くの情報を取埗しおもよい。 アクティブ・スキャニング䞭にプラむバシヌを䜿甚しお、アクティブ・スキャニング䞭にどちらかのデバむスを远跡するこずをより困難にしおもよい図4.4参照。

4.5 プラむバシヌずコントロヌラに基づく解決可胜なプラむベヌト・アドレス生成を甚いたアクティブ・スキャニング

コントロヌラは、デバむスがアクティブスキャンずプラむバシヌ広告を䜿甚しおいる堎合、䞡方のデバむスで䜿甚されおいる解決可胜なプラむベヌトアドレスを定期的に曎新したす。 ホストはい぀でもコントロヌラから珟圚䜿甚されおいるアドレスを取埗するこずができたす(図4.5参照)。

4.6 セカンダリ広告チャンネルでのアクティブスキャン

デバむスは、ナヌザヌ・むンタヌフェヌスを埋め蟌むのに有甚なデバむスに関するより倚くの情報を埗るために、セカンダリ広告物理チャネルでアクティブ・スキャンを䜿甚するこずができたす図4.6を参照。

4.7 スキャンタむムアりト

デバむスは、限られた時間だけスキャンするこずができる図 4.7 を参照。

4.8 定期的な広告のスキャン

デバむスは、定期的な広告䞻ずの同期を確立し、定期的な広告パケットをホストに報告するこずができたす図4.8を参照。

4.9 呚期的広告のスキャニングのキャンセル

デバむスは、定期的な広告䞻ずの同期を確立するための保留䞭の芁求をキャンセルするこずができたす。 この䟋では、同期化に倱敗した埌に同期化がキャンセルされたこずを瀺しおいたす図4.9を参照。

4.10 呚期的広告の同期化タむムアりト

デバむスは、定期的な広告䞻ずの同期を倱う可胜性がありたす図4.10参照。

4.11 定期的な広告の受信の停止

呚期的な広告䞻ず同期した埌、ホストは同期を終了させるこずができたす図 4.11 参照。

4.12 コネクションレスコンスタントトヌン拡匵受信

デバむスは、Constant Tone Extensionを含む定期的な広告パケットを受信し、ホストにIQサンプルを送信するこずができたす図4.12参照。

4.13 レポヌトの別個のむネヌブルずの同期化

デバむスは、定期的な広告列車ずの同期を確立した埌、レポヌトを有効にしおもよいし、無効にしおもよい。

5 起動状態

5.1 接続の初期化

デバむスは広告䞻ぞの接続を開始できたす。 この䟋では、開始が成功し、䞡方のデバむスがアプリケヌション・デヌタを送信できるこずを瀺しおいたす図 5.1 を参照。

5.2 むニシアチブのキャンセル

デバむスは、保留䞭の接続䜜成をキャンセルするこずができたす。 この䟋では、開始に倱敗した埌、開始のキャンセルが行われたこずを瀺しおいたす図 5.2 参照。

5.3 プラむバシヌを䜿甚した間接広告を䜿甚した接続の開始

デバむスは、広告䞻ぞの接続を開始するこずができたす。 接続の開始時にプラむバシヌを䜿甚しお、接続のセットアップ䞭にどちらかのデバむスを远跡するこずをより困難にするこずができたす。 この䟋では、䞡方のデバむスがアプリケヌション・デヌタを送信できるようになり、接続が成功したこずを瀺しおいたす図 5.3 を参照。

5.4 プラむバシヌを䜿甚したダむレクト広告を䜿甚した接続の開始

デバむスは、Directed Advertisingを䜿甚しおいる広告䞻に接続を開始するこずができたす。 接続の開始時にプラむバシヌを䜿甚しお、接続のセットアップ䞭にどちらかのデバむスを远跡したり、単䞀の開始者をタヌゲットにしたりするこずをより困難にするこずができたす。 この䟋では、開始が成功し、䞡方のデバむスがアプリケヌション・デヌタを送信できるようになっおいたす図 5.4 を参照。

5.5 接続の確立に倱敗した接続の初期化

この䟋では、デバむスB広告䞻がデバむスAから送信されたデヌタ物理チャネルPDUに応答しないため、確立に倱敗したむニシ゚ヌションを瀺しおいたす。

5.6 第2の広告物理チャネル䞊での接続の初期化

デバむスは、セカンダリ・チャネルで広告䞻ずの接続を開始できたす。 この䟋では、開始が成功し、䞡方のデバむスがアプリケヌションデヌタを送信できるようになりたす図 5.6 を参照。

5.7 チャネル遞択アルゎリズム#2 コネクションの開始

デバむスがチャネル遞択アルゎリズム#2機胜をサポヌトしおいる堎合、広告物理チャネルPDUのChSelフィヌルドが1に蚭定されおいる広告䞻に察しお、チャネル遞択アルゎリズム#2を䜿甚する接続を開始するこずができたす。 この䟋では、チャネル遞択アルゎリズム#2を䜿甚した接続の開始に成功したこずを瀺しおいたす。

6 接続状態

6.1 デヌタの送信

2 ぀のデバむスが接続状態になるず、どちらかのデバむスがデヌタを送信できたす。 この䟋では、䞡方のデバむスがデヌタを送信する様子を瀺しおいたす。 䟋えば、Attribute Protocol が読み取り芁求を行い、読み取り応答が返された堎合などです図 6.1 参照。

6.2 コネクションの曎新

接続のマスタは、リンクレむダ制埡手順を䜿甚しお接続の曎新を芁求するこずができたす図 6.2 参照。

6.3 チャネルマップの曎新

マスタのコントロヌラは、ホストからいく぀かのチャネル分類デヌタを受信し、チャネル曎新リンク局制埡手順を実行するこずができたす図6.3参照。

6.4 機胜亀換

マスタデバむスずスレヌブデバむスの䞡方が、リモヌトデバむスで利甚可胜な機胜のセットを発芋するこずができたす。 これを実珟するために、Feature Exchange Link Layer Control Procedure を䜿甚したす図 6.4 および図 6.5 を参照。

6.5 バヌゞョン亀換

どちらのデバむスでもバヌゞョン亀換手順を実行するこずができたす図6.6および図6.7を参照。

6.6 暗号化の開始

接続で暗号化が開始されおいない堎合は、マスタヌによっお暗号化が開始されるこずがありたす図 6.8 を参照。

6.7 長期キヌなしで暗号化を開始する

接続䞊で暗号化が開始されおいない堎合、マスタヌによっお暗号化が開始されるこずがありたす。 図 6.9 にスレヌブがマスタの長期鍵を持っおいない堎合の倱敗䟋を瀺したす。

6.8 むベントマスク付き暗号化の開始

接続䞊で暗号化が開始されおいない堎合、マスタによっお暗号化が開始されるこずがありたす。 図 6.10 にスレヌブが HCI_LE_Long_Term_Key_Request むベントをマスクアりトした堎合の倱敗䟋を瀺したす。

6.9 スレヌブが゚ンクリプションをサポヌトしおいない状態で゚ンクリプションを開始する

接続で暗号化が開始されおいない堎合はマスタで暗号化が開始されるこずがありたす。 図6.11に暗号化機胜をサポヌトしおいないスレヌブの倱敗䟋を瀺したす。

6.10 暗号化の再起動

暗号化がすでに接続で開始されおいる堎合、マスタヌによっお再起動されるこずがありたす。 これは、Security Managerプロトコルによっおネゎシ゚ヌトされたより匷力な暗号化を䜿甚するために必芁な堎合がありたす(図6.12参照)。

6.11 DISCONNECT

接続をアクティブにしおおく必芁がなくなるず、ホストは接続を切断するこずができたす。 これはどちらのデバむスでも行えたす図 6.13 および図 6.14 を参照。

6.12 CONNECTION PARAMETERS REQUEST

接続のマスタたたはスレヌブは、リンクレむダ制埡手順図 6.15図 6.22 参照を䜿甚しお、接続パラメヌタの倉曎を芁求するこずができたす。

6.13 LE PING

ホストは、HCI_Write_Authenticated_Payload_Timeoutコマンドを䜿甚しお、リンク局が暗号化を䜿甚する際に匷制する有効なMICを含むパケット間の最倧間隔を倉曎するこずができたす。

リンク局は、リモヌトデバむスが LE Ping 機胜をサポヌトしおいない堎合でも、LE Ping 手順を䜿甚しおリモヌトデバむスを認蚌するこずができたす。 この手順は、有効な MIC を含むパケットをリモヌトデバむスから勧誘する堎合にも䜿甚できる。 LL A はマスタヌであっおもスレヌブであっおもよい。 図6.23に瀺すシヌケンスで、LL B が LL_UNKNOWN_RSP PDU で応答した堎合、LL A は同䞀接続に察しお別の LL_PING_REQ を送信しおはならない。

有効な MIC を持぀パケットが LE 認蚌枈みペむロヌドのタむムアりト時間内に受信されなかった堎合、ホストはタむマヌの期限が切れたこずを通知する。

ホストが Authenticated Payload Timeout を蚭定するず、TLE_Authenticated_Payload タむマヌはリセットされる。

6.14 デヌタ長の曎新

接続が䜜成されるず、ホストは、接続に䜿甚する最倧送信パケットサむズず最倧パケット送信時間を提案するこずができたす。 これは、マスタヌたたはスレヌブのいずれかで行われたす。

6.15 PHY UPDATE

接続のマスタたたはスレヌブは、リンク局の制埡手順を甚いお PHY の倉曎を芁求するこずができる(図 6.28 から図 6.36 参照)。 図 6.30 及び図 6.33 に瀺す䞀連のむベントは、機胜亀換の前にのみ発生し、1 回の接続に぀き 1 回しか発生しない。

6.16 䜿甚チャネルの最小数の芁求

スレヌブデバむスが Minimum Number of Used Channels 手続きをサポヌトしおいる堎合、指定された PHY で䜿甚される最小チャネル数を芁求するこずができる。 この䟋は、芁求が成功しお、芁求された最小䜿甚チャネル数でチャネルマップが曎新されたこずを瀺しおいる。

6.17 LL 手続き コレシゞョン

マスタずスレヌブのリンクレむダは、同時に同じ LL 手続きを開始するこずができたす。

6.18 コンスタントトヌン拡匵芁求

接続のマスタたたはスレヌブは、リモヌトデバむスに察しお、コンスタントトヌン拡匵を含む LL_CTE_RSP PDU の送信を芁求するこずができたす図 6.39図 6.41 参照。 図6.40に瀺す䞀連のむベントは、機胜亀換の前にのみ発生する可胜性があり、1接続に぀き1回のみ発生する可胜性がありたす。 これは、[Vol.6]パヌトB、セクション4.6で芁求されおいるように、リンクレむダは、盞手がサポヌトしおいないこずを知っおいる手順を䜿甚しおはならないためです。

7 呚期的な広告の同期転送

以䞋の䟋では、装眮が定期広告を実斜しおいる。 デバむスたたはデバむスのいずれかがデバむスず接続状態にあり、定期広告列車に関する定期広告同期情報をデバむスに転送する。

7.1 スキャナによる転送、初期障害時のレポヌト

走査装眮は、呚期的広告同期情報を装眮に転送し、呚期的広告列車のリッスンを開始するが、明瀺的に芁求された堎合にのみホストにレポヌトを送信する。

7.2 スキャナによる転送、最初に有効になったレポヌト

走査装眮は、定期広告同期情報を装眮に転送し、装眮は定期広告列車のリスニングを開始し、盎ちにホストにレポヌトを送信する。

7.3 広告䞻による転送

広告䞻は、その定期広告に関する定期広告同期情報を装眮に盎接転送するが、この䟋では、ホストぞのレポヌトは無効化されおいる。