1b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt/* 2b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt * BT-AMP (BlueTooth Alternate Mac and Phy) HCI (Host/Controller Interface) 3b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt * 438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * Copyright (C) 1999-2013, Broadcom Corporation 538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * 66dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * Permission to use, copy, modify, and/or distribute this software for any 76dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * purpose with or without fee is hereby granted, provided that the above 86dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * copyright notice and this permission notice appear in all copies. 96dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * 106dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 116dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 126dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 136dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 146dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION 156dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 166dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt * 1838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * $Id: bt_amp_hci.h 382882 2013-02-04 23:24:31Z $ 19b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt*/ 20b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 21b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#ifndef _bt_amp_hci_h 22b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define _bt_amp_hci_h 23b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 24b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt/* This marks the start of a packed structure section. */ 25b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#include <packed_section_start.h> 26b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 27b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 28b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt/* AMP HCI CMD packet format */ 29b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct amp_hci_cmd { 30b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint16 opcode; 31b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 plen; 32b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 parms[1]; 33b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT amp_hci_cmd_t; 34b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 35b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_CMD_PREAMBLE_SIZE OFFSETOF(amp_hci_cmd_t, parms) 36b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_CMD_DATA_SIZE 255 37b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 38b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt/* AMP HCI CMD opcode layout */ 39b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_CMD_OPCODE(ogf, ocf) ((((ogf) & 0x3F) << 10) | ((ocf) & 0x03FF)) 40b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_CMD_OGF(opcode) ((uint8)(((opcode) >> 10) & 0x3F)) 41b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_CMD_OCF(opcode) ((opcode) & 0x03FF) 42b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 43b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt/* AMP HCI command opcodes */ 44b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Read_Failed_Contact_Counter HCI_CMD_OPCODE(0x05, 0x0001) 45b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Reset_Failed_Contact_Counter HCI_CMD_OPCODE(0x05, 0x0002) 46b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Read_Link_Quality HCI_CMD_OPCODE(0x05, 0x0003) 47b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Read_Local_AMP_Info HCI_CMD_OPCODE(0x05, 0x0009) 48b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Read_Local_AMP_ASSOC HCI_CMD_OPCODE(0x05, 0x000A) 49b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Write_Remote_AMP_ASSOC HCI_CMD_OPCODE(0x05, 0x000B) 50b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Create_Physical_Link HCI_CMD_OPCODE(0x01, 0x0035) 51b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Accept_Physical_Link_Request HCI_CMD_OPCODE(0x01, 0x0036) 52b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Disconnect_Physical_Link HCI_CMD_OPCODE(0x01, 0x0037) 53b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Create_Logical_Link HCI_CMD_OPCODE(0x01, 0x0038) 54b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Accept_Logical_Link HCI_CMD_OPCODE(0x01, 0x0039) 55b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Disconnect_Logical_Link HCI_CMD_OPCODE(0x01, 0x003A) 56b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Logical_Link_Cancel HCI_CMD_OPCODE(0x01, 0x003B) 57b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Flow_Spec_Modify HCI_CMD_OPCODE(0x01, 0x003C) 58b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Write_Flow_Control_Mode HCI_CMD_OPCODE(0x01, 0x0067) 59b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Read_Best_Effort_Flush_Timeout HCI_CMD_OPCODE(0x01, 0x0069) 60b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Write_Best_Effort_Flush_Timeout HCI_CMD_OPCODE(0x01, 0x006A) 61b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Short_Range_Mode HCI_CMD_OPCODE(0x01, 0x006B) 62b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Reset HCI_CMD_OPCODE(0x03, 0x0003) 63b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Read_Connection_Accept_Timeout HCI_CMD_OPCODE(0x03, 0x0015) 64b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Write_Connection_Accept_Timeout HCI_CMD_OPCODE(0x03, 0x0016) 65b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Read_Link_Supervision_Timeout HCI_CMD_OPCODE(0x03, 0x0036) 66b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Write_Link_Supervision_Timeout HCI_CMD_OPCODE(0x03, 0x0037) 67b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Enhanced_Flush HCI_CMD_OPCODE(0x03, 0x005F) 68b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Read_Logical_Link_Accept_Timeout HCI_CMD_OPCODE(0x03, 0x0061) 69b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Write_Logical_Link_Accept_Timeout HCI_CMD_OPCODE(0x03, 0x0062) 70b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Set_Event_Mask_Page_2 HCI_CMD_OPCODE(0x03, 0x0063) 71b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Read_Location_Data_Command HCI_CMD_OPCODE(0x03, 0x0064) 72b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Write_Location_Data_Command HCI_CMD_OPCODE(0x03, 0x0065) 73b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Read_Local_Version_Info HCI_CMD_OPCODE(0x04, 0x0001) 74b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Read_Local_Supported_Commands HCI_CMD_OPCODE(0x04, 0x0002) 75b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Read_Buffer_Size HCI_CMD_OPCODE(0x04, 0x0005) 76b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Read_Data_Block_Size HCI_CMD_OPCODE(0x04, 0x000A) 77b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 78b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt/* AMP HCI command parameters */ 79b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct read_local_cmd_parms { 80b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 plh; 81b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 offset[2]; /* length so far */ 82b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 max_remote[2]; 83b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT read_local_cmd_parms_t; 84b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 85b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct write_remote_cmd_parms { 86b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 plh; 87b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 offset[2]; 88b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 len[2]; 89b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 frag[1]; 90b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT write_remote_cmd_parms_t; 91b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 92b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct phy_link_cmd_parms { 93b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 plh; 94b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 key_length; 95b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 key_type; 96b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 key[1]; 97b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT phy_link_cmd_parms_t; 98b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 99b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct dis_phy_link_cmd_parms { 100b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 plh; 101b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 reason; 102b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT dis_phy_link_cmd_parms_t; 103b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 104b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct log_link_cmd_parms { 105b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 plh; 106b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 txflow[16]; 107b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 rxflow[16]; 108b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT log_link_cmd_parms_t; 109b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 110b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct ext_flow_spec { 111b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 id; 112b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 service_type; 113b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 max_sdu[2]; 114b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 sdu_ia_time[4]; 115b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 access_latency[4]; 116b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 flush_timeout[4]; 117b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT ext_flow_spec_t; 118b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 119b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct log_link_cancel_cmd_parms { 120b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 plh; 121b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 tx_fs_ID; 122b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT log_link_cancel_cmd_parms_t; 123b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 124b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct flow_spec_mod_cmd_parms { 125b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 llh[2]; 126b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 txflow[16]; 127b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 rxflow[16]; 128b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT flow_spec_mod_cmd_parms_t; 129b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 130b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct plh_pad { 131b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 plh; 132b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 pad; 133b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT plh_pad_t; 134b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 135b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT union hci_handle { 136b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint16 bredr; 137b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt plh_pad_t amp; 138b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT hci_handle_t; 139b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 140b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct ls_to_cmd_parms { 141b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt hci_handle_t handle; 142b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 timeout[2]; 143b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT ls_to_cmd_parms_t; 144b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 145b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct befto_cmd_parms { 146b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 llh[2]; 147b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 befto[4]; 148b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT befto_cmd_parms_t; 149b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 150b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct srm_cmd_parms { 151b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 plh; 152b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 srm; 153b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT srm_cmd_parms_t; 154b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 155b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct ld_cmd_parms { 156b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 ld_aware; 157b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 ld[2]; 158b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 ld_opts; 159b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 l_opts; 160b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT ld_cmd_parms_t; 161b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 162b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct eflush_cmd_parms { 163b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 llh[2]; 164b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 packet_type; 165b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT eflush_cmd_parms_t; 166b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 167b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt/* Generic AMP extended flow spec service types */ 168b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define EFS_SVCTYPE_NO_TRAFFIC 0 169b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define EFS_SVCTYPE_BEST_EFFORT 1 170b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define EFS_SVCTYPE_GUARANTEED 2 171b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 172b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt/* AMP HCI event packet format */ 173b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct amp_hci_event { 174b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 ecode; 175b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 plen; 176b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 parms[1]; 177b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT amp_hci_event_t; 178b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 179b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_EVT_PREAMBLE_SIZE OFFSETOF(amp_hci_event_t, parms) 180b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 181b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt/* AMP HCI event codes */ 182b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Command_Complete 0x0E 183b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Command_Status 0x0F 184b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Flush_Occurred 0x11 185b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Enhanced_Flush_Complete 0x39 186b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Physical_Link_Complete 0x40 187b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Channel_Select 0x41 188b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Disconnect_Physical_Link_Complete 0x42 189b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Logical_Link_Complete 0x45 190b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Disconnect_Logical_Link_Complete 0x46 191b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Flow_Spec_Modify_Complete 0x47 192b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Number_of_Completed_Data_Blocks 0x48 193b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Short_Range_Mode_Change_Complete 0x4C 194b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Status_Change_Event 0x4D 195b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Vendor_Specific 0xFF 196b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 197b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt/* AMP HCI event mask bit positions */ 198b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Physical_Link_Complete_Event_Mask 0x0001 199b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Channel_Select_Event_Mask 0x0002 200b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Disconnect_Physical_Link_Complete_Event_Mask 0x0004 201b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Logical_Link_Complete_Event_Mask 0x0020 202b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Disconnect_Logical_Link_Complete_Event_Mask 0x0040 203b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Flow_Spec_Modify_Complete_Event_Mask 0x0080 204b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Number_of_Completed_Data_Blocks_Event_Mask 0x0100 205b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Short_Range_Mode_Change_Complete_Event_Mask 0x1000 206b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_Status_Change_Event_Mask 0x2000 207b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_All_Event_Mask 0x31e7 208b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt/* AMP HCI event parameters */ 209b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct cmd_status_parms { 210b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 status; 211b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 cmdpkts; 212b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint16 opcode; 213b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT cmd_status_parms_t; 214b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 215b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct cmd_complete_parms { 216b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 cmdpkts; 217b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint16 opcode; 218b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 parms[1]; 219b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT cmd_complete_parms_t; 220b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 221b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct flush_occurred_evt_parms { 222b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint16 handle; 223b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT flush_occurred_evt_parms_t; 224b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 225b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct write_remote_evt_parms { 226b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 status; 227b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 plh; 228b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT write_remote_evt_parms_t; 229b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 230b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct read_local_evt_parms { 231b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 status; 232b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 plh; 233b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint16 len; 234b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 frag[1]; 235b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT read_local_evt_parms_t; 236b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 237b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct read_local_info_evt_parms { 238b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 status; 239b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 AMP_status; 240b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint32 bandwidth; 241b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint32 gbandwidth; 242b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint32 latency; 243b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint32 PDU_size; 244b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 ctrl_type; 245b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint16 PAL_cap; 246b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint16 AMP_ASSOC_len; 247b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint32 max_flush_timeout; 248b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint32 be_flush_timeout; 249b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT read_local_info_evt_parms_t; 250b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 251b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct log_link_evt_parms { 252b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 status; 253b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint16 llh; 254b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 plh; 255b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 tx_fs_ID; 256b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT log_link_evt_parms_t; 257b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 258b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct disc_log_link_evt_parms { 259b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 status; 260b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint16 llh; 261b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 reason; 262b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT disc_log_link_evt_parms_t; 263b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 264b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct log_link_cancel_evt_parms { 265b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 status; 266b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 plh; 267b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 tx_fs_ID; 268b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT log_link_cancel_evt_parms_t; 269b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 270b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct flow_spec_mod_evt_parms { 271b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 status; 272b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint16 llh; 273b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT flow_spec_mod_evt_parms_t; 274b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 275b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct phy_link_evt_parms { 276b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 status; 277b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 plh; 278b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT phy_link_evt_parms_t; 279b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 280b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct dis_phy_link_evt_parms { 281b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 status; 282b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 plh; 283b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 reason; 284b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT dis_phy_link_evt_parms_t; 285b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 286b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct read_ls_to_evt_parms { 287b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 status; 288b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt hci_handle_t handle; 289b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint16 timeout; 290b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT read_ls_to_evt_parms_t; 291b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 292b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct read_lla_ca_to_evt_parms { 293b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 status; 294b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint16 timeout; 295b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT read_lla_ca_to_evt_parms_t; 296b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 297b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct read_data_block_size_evt_parms { 298b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 status; 299b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint16 ACL_pkt_len; 300b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint16 data_block_len; 301b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint16 data_block_num; 302b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT read_data_block_size_evt_parms_t; 303b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 304b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct data_blocks { 305b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint16 handle; 306b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint16 pkts; 307b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint16 blocks; 308b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT data_blocks_t; 309b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 310b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct num_completed_data_blocks_evt_parms { 311b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint16 num_blocks; 312b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 num_handles; 313b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt data_blocks_t completed[1]; 314b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT num_completed_data_blocks_evt_parms_t; 315b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 316b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct befto_evt_parms { 317b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 status; 318b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint32 befto; 319b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT befto_evt_parms_t; 320b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 321b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct srm_evt_parms { 322b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 status; 323b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 plh; 324b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 srm; 325b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT srm_evt_parms_t; 326b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 327b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct contact_counter_evt_parms { 328b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 status; 329b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 llh[2]; 330b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint16 counter; 331b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT contact_counter_evt_parms_t; 332b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 333b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct contact_counter_reset_evt_parms { 334b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 status; 335b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 llh[2]; 336b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT contact_counter_reset_evt_parms_t; 337b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 338b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct read_linkq_evt_parms { 339b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 status; 340b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt hci_handle_t handle; 341b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 link_quality; 342b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT read_linkq_evt_parms_t; 343b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 344b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct ld_evt_parms { 345b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 status; 346b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 ld_aware; 347b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 ld[2]; 348b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 ld_opts; 349b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 l_opts; 350b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT ld_evt_parms_t; 351b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 352b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct eflush_complete_evt_parms { 353b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint16 handle; 354b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT eflush_complete_evt_parms_t; 355b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 356b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct vendor_specific_evt_parms { 357b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 len; 358b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 parms[1]; 359b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT vendor_specific_evt_parms_t; 360b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 361b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct local_version_info_evt_parms { 362b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 status; 363b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 hci_version; 364b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint16 hci_revision; 365b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 pal_version; 366b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint16 mfg_name; 367b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint16 pal_subversion; 368b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT local_version_info_evt_parms_t; 369b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 370b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define MAX_SUPPORTED_CMD_BYTE 64 371b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct local_supported_cmd_evt_parms { 372b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 status; 373b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 cmd[MAX_SUPPORTED_CMD_BYTE]; 374b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT local_supported_cmd_evt_parms_t; 375b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 376b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct status_change_evt_parms { 377b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 status; 378b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 amp_status; 379b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT status_change_evt_parms_t; 380b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 381b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt/* AMP HCI error codes */ 382b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_SUCCESS 0x00 383b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_ERR_ILLEGAL_COMMAND 0x01 384b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_ERR_NO_CONNECTION 0x02 385b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_ERR_MEMORY_FULL 0x07 386b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_ERR_CONNECTION_TIMEOUT 0x08 387b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_ERR_MAX_NUM_OF_CONNECTIONS 0x09 388b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_ERR_CONNECTION_EXISTS 0x0B 389b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_ERR_CONNECTION_DISALLOWED 0x0C 390b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_ERR_CONNECTION_ACCEPT_TIMEOUT 0x10 391b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_ERR_UNSUPPORTED_VALUE 0x11 392b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_ERR_ILLEGAL_PARAMETER_FMT 0x12 393b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_ERR_CONN_TERM_BY_LOCAL_HOST 0x16 394b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_ERR_UNSPECIFIED 0x1F 395b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_ERR_UNIT_KEY_USED 0x26 396b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_ERR_QOS_REJECTED 0x2D 397b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_ERR_PARAM_OUT_OF_RANGE 0x30 398b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_ERR_NO_SUITABLE_CHANNEL 0x39 399b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_ERR_CHANNEL_MOVE 0xFF 400b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 401b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt/* AMP HCI ACL Data packet format */ 402b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct amp_hci_ACL_data { 403b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint16 handle; /* 12-bit connection handle + 2-bit PB and 2-bit BC flags */ 404b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint16 dlen; /* data total length */ 405b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 data[1]; 406b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT amp_hci_ACL_data_t; 407b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 408b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_ACL_DATA_PREAMBLE_SIZE OFFSETOF(amp_hci_ACL_data_t, data) 409b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 410b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_ACL_DATA_BC_FLAGS (0x0 << 14) 411b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_ACL_DATA_PB_FLAGS (0x3 << 12) 412b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 413b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_ACL_DATA_HANDLE(handle) ((handle) & 0x0fff) 414b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_ACL_DATA_FLAGS(handle) ((handle) >> 12) 415b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 416b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt/* AMP Activity Report packet formats */ 417b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct amp_hci_activity_report { 418b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 ScheduleKnown; 419b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 NumReports; 420b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 data[1]; 421b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT amp_hci_activity_report_t; 422b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 423b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct amp_hci_activity_report_triple { 424b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint32 StartTime; 425b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint32 Duration; 426b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint32 Periodicity; 427b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT amp_hci_activity_report_triple_t; 428b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 429b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define HCI_AR_SCHEDULE_KNOWN 0x01 430b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 431b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 432b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt/* This marks the end of a packed structure section. */ 433b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#include <packed_section_end.h> 434b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 435b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#endif /* _bt_amp_hci_h_ */ 436