命令
下表列出蓝牙协议中从L2CAP到物理层的命令和事件映射。希望这个列表可以帮助你分析蓝牙协议中从协议高层发给较低层次的控制命令和消息命令。我们还会通过讲解一个示例来具体地说明协议高层收到连接请求时的情况。
L2CAP | HCI | LMP/BASEBAND |
连接和不连接 |
L2CAP_ConnectReq L2CAP_ConnectRsp L2CAP_ConnectRspPnd L2CAP_ConnectRspNeg LP_ConnectReq LP_ConnectRsp LP_ConnectRspNeg LP_ConnectCfm LP_ConnectCfmNeg LP_ConnectInd L2CA_ConnectInd L2CA_ConnectCfm L2CA_ConnectCfmNeg L2CA_ConnectPnd L2CA_ConnectReq L2CA_ConnectRsp L2CA_ConnectRspNeg | HCI_Create_Connection HCI_Accept_Connection_Request HCI_Reject_Connection_Request HCI_Add_SCO_Connection HCI_Read_Connection_Accept_Timeout HCI_Write_Connection_Accept_Timeout | LMP_host_connection_req LMP_setup_complete LMP_SCO_link_req |
L2CAP_DisconnectReq L2CAP_DisconnectRsp LP_DisconnectInd L2CA_DisconnectReq L2CA_DisconnectRsp L2CA_DisconnectInd L2CA_DisconnectCfm | HCI_Disconnect | LMP_detach LMP_remove_SCO_link_req |
安全 |
L2CAP层不安全 | HCI_Authentication_Requested HCI_Set_Connection_Encryption HCI_Change_Connection_Link_Key HCI_Master_Link_Key HCI_PIN_Code_Request_Reply HCI_PIN_Code_Request_Negative_Reply HCI_Link_Key_Request_Reply HCI_Link_Key_Request_Negative_Reply HCI_Read_Pin_Type HCI_Write_Pin_Type HCI_Create_New_Unit_Key HCI_Read_Stored_Link_Key HCI_Write_Stored_Link_Key HCI_Delete_Stored_Link_Key HCI_Read_Authentication_Enable HCI_Write_Authentication_Enable HCI_Read_Encryption_Mode HCI_Write_Encryption_Mode | LMP_au_rand LMP_in_rand LMP_temp_rand LMP_temp_key LMP_comb_key LMP_unit_key LMP_sres LMP_start_encryption_req LMP_stop_encryption_req LMP_encryption_mode_req LMP_encryption_key_size_req LMP_use_semi_permanent_key |
模式处理 |
L2CAP层不进行模式处理 | HCI_Hold_Mode HCI_Sniff_Mode HCI_Exit_Sniff_Mode HCI_Park_Mode HCI_Exit_Park_Mode HCI_Read_Hold_Mode_Activity HCI_Write_Hold_Mode_Activity | LMP_hold LMP_hold_req LMP_sniff LMP_sniff_req LMP_unsniff_req LMP_park_req LMP_park LMP_set_broadcast_scan_window LMP_modify_beacon LMP_unpark_PM_ADDR_req LMP_unpark_BD_ADDR_req |
连接子状态 |
L2CAP不进行连接子状态处理 | HCI_Inquiry HCI_Inquiry_Cancel HCI_Periodic_Inquiry_Mode HCI_Exit_Periodic_Inquiry_Mode HCI_Read_Page_Timeout HCI_Write_Page_Timeout HCI_Read_Scan_Enable HCI_Write_Scan_Enable HCI_Read_Page_Scan_Activity HCI_Write_Page_Scan_Activity HCI_Read_Inquiry_Scan_Activity HCI_Write_Inquiry_Scan_Activity HCI_Read_Page_Scan_Mode HCI_Write_Page_Scan_Mode HCI_Read_Page_Scan_Period_Mode HCI_Write_Page_Scan_Period_Mode HCI_Read_Num_Broadcast_Retransmissions HCI_Write_Num_Broadcast_Retransmissions | LMP_page_mode_req LMP_page_scan_mode_req |
QoS和流控 |
LP_QoSReq LP_QoSCfm LP_QoSCfmNeg LP_QoSViolationInd L2CA_QoSViolationInd | HCI_QoS_Setup HCI_Read_SCO_Flow_Control_Enable HCI_Write_SCO_Flow_Control_Enable HCI_Set_Host_Controller_To_Host_Flow_Control HCI_Get_Link_Quality | LMP_quality_of_service LMP_quality_of_service_req LMP_auto_rate LMP_preferred_rate |
其他 |
L2CAP_Data L2CAP_ConfigReq L2CAP_ConfigRsp L2CAP_ConfigRspNeg L2CA_ConfigReq L2CA_ConfigRsp L2CA_ConfigRspNeg L2CA_ConfigInd L2CA_ConfigCfm L2CA_ConfigCfmNeg L2CA_TimeOutInd L2CA_DataRead L2CA_DataWrite | HCI_Change_Connection_Packet_Type HCI_Remote_Name_Requested HCI_Read_Remote_Supported_Features HCI_Read_Remote_Version_Information HCI_Read_Local_Version_Information HCI_Local_Supported_Features HCI_Read_Clock_Offset HCI_Role_Discovery HCI_Switch_Role HCI_Read_Link_Policy_Settings HCI_Write_Link_Policy_Settings HCI_Read_Buffer_Size HCI_Host_Buffer_Size HCI_Read_Country_Code HCI_BD_ADDR HCI_Read_Current_IAC_LAP HCI_Write_Current_IAC_LAP HCI_Read_Number_Of_Supported_IAC HCI_Read_Class_Of_Device HCI_Write_Class_Of_Device HCI_Read_Voice_Setting HCI_Write_Voice_Setting HCI_Read_Automatic_Flush_Timeout HCI_Write_Automatic_Flush_Timeout HCI_Read_Supervision_Timeout HCI_Read_Link_Supervision_Timeout HCI_Write_Link_Supervision_Timeout HCI_Read_Transmit_Power_Level HCI_Change_Local_Name HCI_Read_Local_Name HCI_Set_Event_Mask HCI_Set_Event_Filter HCI_Flush HCI_Reset HCI_Host_Number_Of_Completed_Packets | LMP_name_req LMP_name_res LMP_accpted LMP_not_accepted LMP_switch_req LMP_version_req LMP_version_res LMP_clkoffset_req LMP_clkoffset_res LMP_timing_accuracy_req LMP_timing_accuracy_res LMP_max_power LMP_min_power LMP_incr_power_req LMP_decr_power_req LMP_slot_offset LMP_max_slot LMP_max_slot_req LMP_features_req LMP_features_res |
事件
HCI事件 | 说明 |
Inquiry Complete Event | 表示查询已经完成。 |
Inquiry Result Event | 表示某台蓝牙设备或者多台蓝牙设备在当前查询过程中已经做出响应。 |
Connection Complete Event | 向形成连接的主机双方指示新连接已经建立。 |
Connection Request Event | 表示新入站连接正在建立过程中。 |
Disconnection Complete Event | 在连接被终止后触发。 |
Authentication Complete Event | 当指定连接的认证过程完成后触发。 |
Remote Name Request Complete Event | 表示远端名称请求已经完成。 |
Encryption Change Event | 表示连接句柄(Connection_Handle)的加密变更已经完成。 |
Change Connection Link Key Complete Event | 表示连接句柄的链路密钥(Link Key)变更已经完成。 |
Master Link Key Complete Event | 表示蓝牙主机方的临时或者半永久链路密钥的变更已经完成。 |
Read Remote Supported Features Complete Event | 表示获得远端蓝牙设备所支持特性的链路管理器(Link Manager)过程已经完成。 |
Read Remote Version Information Complete Event | 表示获得远端蓝牙设备版本信息的链路管理器(Link Manager)过程已经完成。 |
QoS Setup Complete Event | 表示设置远端蓝牙设备QoS的链路管理器过程已经完成。 |
Command Complete Event | 主机控制器(Host Controller)使用该事件传递命令的返回状态。 |
Command Status Event | 表示命令已经收到,主机控制器目前正在执行该命令下达的任务。 |
Hardware Error Event | 表示蓝牙设备的某种类型硬件出现故障。 |
Flush Occurred Event | 表示对指定的连接句柄当前被传输的用户数据已经取消。 |
Role Change Event | 表示和特定连接相关联的当前蓝牙设备的角色已经改变。 |
Number Of Completed Packets Event | 主机控制器使用该事件向主机表示在前一个Number Of Completed Packets 之后到目前每个Connection Handle 所完成的HCI 数据分组数量。 |
Mode Change Event | 表示关联连接句柄的设备在Active、Hold、Sniff和Park模式之间发生了变更。 |
Return Link Keys Event | 用于返回存储的链路秘钥。 |
PIN Code Request Event | 表示需要PIN码来为某个连接创建新链路秘钥。 |
Link Key Request Event | 表示以和BD_ADDR指定的设备连接需要一个链路密钥。 |
Link Key Notification Event | 向主机表示和BD_ADDR指定的设备连接所需要的新链路密钥已经创建。 |
Loopback Command Event | 回送主机发送给主机控制器的大多数命令。 |
Data Buffer Overflow Event | 表示主机控制器的数据缓冲已经溢出。 |
Max Slots Change Event | 在LMP_Max_Slots参数改变的时候通知主机。 |
Read Clock Offset Complete Event | 表示获得Clock Offset 信息的LM过程已经完成。 |
Connection Packet Type Changed Event | 表示改变指定连接句柄数据包类型的LM过程已经完成。 |
QoS Violation Event | 表示LM不能为当前的连接句柄提供所需的QoS。 |
Page Scan Mode Change Event | 表示已经连接的、具有指定连接句柄的远端蓝牙设备已经成功改变其寻呼扫描模式(Page_Scan_Mode)。 |
Page Scan Repetition Mode Change Event | 表示已经连接的、具有指定连接句柄的远端蓝牙设备已经成功地改变Page_Scan_Repetition_Mode(SR)。 |