LoginSignup
10
11

More than 3 years have passed since last update.

BLEのHCIコマンドについて

Last updated at Posted at 2016-04-10

BLEのHCIコマンドについて

Bluetoothの仕様書(4.0, 4.1, 4.2, 5.0, 5.1)から BLE single mode で使用するHCIコマンドについて、機能ごと、バージョンごとにまとめてみました。
(Supported Controllers が ALL か LE になっているコマンド+α)

BLEの機能を実装する場合に、vol 2, Part E, 7.8 LE CONTROLLER COMMANDS で定義されるコマンド以外も使うことに注意しましょう。

実際には、もう少し使うHCIコマンドが増えるはずです。(HCI_Read_Local_Nameとか必要のような気がします。)

なんとなく各コマンドについて日本語の説明を書いてみましたが、間違っているかもしれません。

4.0

Device Setup

  • HCI_Reset リセット 一番はじめに行う

Controller Flow Control

  • HCI_Read_Buffer_Size HCIのバッファサイズ
  • HCI_LE_Read_Buffer_Size LE用のHCIのバッファサイズ

Controller Information

  • HCI_Read_Local_Version_Information コントローラのバージョン情報を読む
  • HCI_Read_Local_Supported_Commands コントローラのコマンドサポート情報を読む
  • HCI_Read_Local_Supported_Features コントーローラの機能サポート情報を読む
  • HCI_Read_BD_ADDR コントローラのBDアドレスを読む
  • HCI_LE_Read_Local_Supported_Features コントローラのLE機能サポート情報を読む
  • HCI_LE_Read_Supported_Status コントローラのLEサポート情報を読む

Controller Configuration

  • HCI_LE_Set_Advertise_Enable アドバタイズの開始・停止
  • HCI_LE_Set_Advertisng_Data アドバタイズに含まれる中身を設定
  • HCI_LE_Set_Advertisng_Parameters アドバタイズの間隔などのパラメータ設定
  • HCI_LE_Set_Random_Address ランダムアドレスの設定
  • HCI_LE_SET_Scan_Response_Data スキャンレスポンスに含まれる中身を設定
  • HCI_Read_LE_Host_Support HostのLEサポート情報を読む
  • HCI_Write_LE_Host_Support HostのLEサポート情報を書く

Device Discovery

  • HCI_LE_Set_Scan_Enable スキャンの開始・停止
  • HCI_LE_Set_Scan_Parameters スキャンの間隔などのパラメータ設定

Connection Setup

  • HCI_Disconnect コネクションの切断
  • HCI_LE_Create_Connection_Cancel コネクション開始のキャンセル
  • HCI_LE_Create_Connection コネクション開始

Remote Information

  • HCI_Read_Remote_Version_Information リモートのバージョン情報を読む
  • HCI_LE_Read_Remote_Used_Features リモートのLEバージョン情報を読む

Connection State

  • HCI_LE_Connection_Update コネクションパラメータのアップデート

Physical Links

  • HCI_LE_Set_Host_Channel_Classification 使用可能なchannelの設定

Host Flow Control

  • HCI_Host_Buffer_Size ホストのバッファサイズ
  • HCI_Set_Event_Mask イベントマスク
  • HCI_Set_Controller_To_Host_Flow_Control コントローラからホストへのフロー制御設定
  • HCI_Host_Number_Of_Completed_Packets completesパケットの数
  • HCI_LE_Add_Device_From_White_List ホワイトリストにデバイスを追加
  • HCI_LE_Set_Event_Mask LEのイベントマスク

Link Information

  • HCI_Read_Transmit_Power_Level 送信出力レベル
  • HCI_Read_RSSI RSSI
  • HCI_LE_Read_Advertising_Channel_Tx_Power アドバタイズの送信出力
  • HCI_LE_Read_Channel_Map LEチャンネルマップ

Authentication and Encryption

  • HCI_LE_Encrypt LEの暗号化
  • HCI_LE_Long_Term_Key_Request_Replay LEのLTKリクエストのリプライ
  • HCI_LE_Long_Term_Key_Request_Negative_Reply LEのLTKリクエストのネガティブリプライ
  • HCI_LE_Rand LEの乱数
  • HCI_LE_Start_Encryption LEの暗号化開始

Testing

  • HCI_LE_Receiver_Test LE受信テスト
  • HCI_LE_Transmitter_Test LE送信テスト
  • HCI_LE_Test_End LEテスト停止

4.1

Connection State

  • HCI_LE_Remote_Connection_Parameter_Request_Reply リモートのコネクションパラメータリクエストのリプライ
  • HCI_LE_Remote_Connection_Parameter_Request_Negative_Reply リモートのコネクションパラメータリクエストのネガティブリプライ

Authentication and Encryption

  • HCI_Write_Authenticated_Payload_Timeout Authペイロードタイムアウトの書き込み LE Pingで使う
  • HCI_Read_Authenticated_Payload_Timeout Authペイロードタイムアウトの読出し LE Pingで使う

CSA3で追加されたコマンドは省略

4.2

Controller Information

  • HCI_LE_Read_Maximum_Data_Length コントローラがサポートするLEの最大データ長

Controller Configuration

  • HCI_LE_Set_Resolvable_Private_Address_Timeout RPAタイムアウトの設定

Connection Setup

  • HCI_LE_Enhanced_Connection_Complete 拡張ConnectionComplete

Connection State

  • HCI_LE_Set_Data_Length LEデータ長の設定
  • HCI_LE_Read_Suggested_Default_Data_Length 提案するデフォルトデータ長の読み出し
  • HCI_LE_Write_Suggested_Default_Data_Length 提案するデフォルトデータ長の書き込み

Host Flow Control

  • HCI_LE_Add_Device_To_Resolving_List デバイスをResolvingListに追加
  • HCI_LE_Remove_Device_From_Resolving_List デバイスをResolvingListから削除
  • HCI_LE_Clear_Resolving_List ResolvingListを削除
  • HCI_LE_Read_Resolving_List_Size ResolvingListのサイズ
  • HCI_LE_Read_Peer_Resolvable_Address peerのRPAを読み出す
  • HCI_LE_Read_Local_Resolvable_Address localのRPAを読み出す
  • HCI_LE_Set_Address_Resolution_Enable Addres Resolutionの設定

Authentication and Encryption

  • HCI_LE_Read_Local_P-256_Public_Key P-256キー
  • HCI_LE_Generate_DHKey DHkeyの生成

CSA4で追加されたコマンドは省略

5.0

Advertise

  • HCI_LE_Clear_Periodic_Advertiser_List_Command
  • HCI_LE_Periodic_Advertising_Create_Sync_Command
  • HCI_LE_Periodic_Advertising_Terminate_Sync_Command
  • HCI_LE_Read_Maximum_Advertising_Data_Length_Command
  • HCI_LE_Read_Number_of_Supported_Advertising_Sets_Command
  • HCI_LE_Read_Periodic_Advertiser_List_Size_Command
  • HCI_LE_Remove_Advertising_Set_Command
  • HCI_LE_Set_Advertising_Set_Random_Address_Command
  • HCI_LE_Set_Extended_Advertising_Data_Command
  • HCI_LE_Set_Extended_Advertising_Enable_Command
  • HCI_LE_Set_Extended_Advertising_Parameters_Command
  • HCI_LE_Set_Periodic_Advertising_Data_Command
  • HCI_LE_Set_Periodic_Advertising_Enable_Command
  • HCI_LE_Set_Periodic_Advertising_Parameters_Command

Scan

  • HCI_LE_Set_Extended_Scan_Enable_Command
  • HCI_LE_Set_Extended_Scan_Parameters_Command
  • HCI_LE_Set_Extended_Scan_Response_Data_Command

Phy

  • HCI_LE_Read_PHY_Command
  • HCI_LE_Set_Default_PHY_Command
  • HCI_LE_Set_PHY_Command

Test

  • HCI_LE_Enhanced_Receiver_Test_Command
  • HCI_LE_Enhanced_Transmitter_Test_Command

RF

  • HCI_LE_Read_RF_Path_Compensation_Command
  • HCI_LE_Read_Transmit_Power_Command
  • HCI_LE_Write_RF_Path_Compensation_Command

Other

  • HCI_LE_Set_Event_Mask_Command

5.1

コマンドの表記がcommand(全部小文字)になった。

  • HCI_LE_Connection_CTE_Request_Enable_command
  • HCI_LE_Connection_CTE_Response_Enable_command
  • HCI_LE_Set_Connection_CTE_Receive_Parameters_command
  • HCI_LE_Set_Connection_CTE_Transmit_Parameters_command
  • HCI_LE_Set_Connectionless_CTE_Transmit_Enable_command
  • HCI_LE_Set_Connectionless_CTE_Transmit_Parameters_command
  • HCI_LE_Set_Connectionless_IQ_Sampling_Enable_command アドバタイズパケットに含まれるTCEのIQサンプリングを有効
  • HCI_LE_Read_Antenna_Information_command AoAとAoDのためのアンテナスイッチング機能の有無を取得

Advertise

  • HCI_LE_Periodic_Advertising_Set_Info_Transfer_command
  • HCI_LE_Periodic_Advertising_Sync_Transfer_command
  • HCI_LE_Set_Default_Periodic_Advertising_Sync_Transfer_Parameters_command
  • HCI_LE_Set_Default_Periodic_Advertising_Sync_Transfer_Parameters_command
  • HCI_LE_Set_Periodic_Advertising_Sync_Transfer_Parameters command

Other

  • HCI_LE_Generate_DHKey_command DHKey生成コマンド 引数が増えたのとデバッグ用鍵生成をサポート
  • HCI_LE_Modify_Sleep_Clock_Accuracy_command スリープクロックのaccuracyを変更

参考

  • Bluetooth Core Spec の Volume 2 , Part E, 3 Overview of Commands and Events
  • Bluetooth Core Spec の Volume 2 , Part E, 7 HCI Commands and Events
10
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11