| //- |
| // Copyright (c) 2009-2010 Atheros Communications Inc. |
| // All rights reserved. |
| // |
| // |
| // The software source and binaries included in this development package are |
| // licensed, not sold. You, or your company, received the package under one |
| // or more license agreements. The rights granted to you are specifically |
| // listed in these license agreement(s). All other rights remain with Atheros |
| // Communications, Inc., its subsidiaries, or the respective owner including |
| // those listed on the included copyright notices. Distribution of any |
| // portion of this package must be in strict compliance with the license |
| // agreement(s) terms. |
| // |
| // |
| // |
| // |
| |
| |
| #ifndef __A_HCI_H__ |
| #define __A_HCI_H__ |
| |
| #define HCI_CMD_OGF_MASK 0x3F |
| #define HCI_CMD_OGF_SHIFT 10 |
| #define HCI_CMD_GET_OGF(opcode) ((opcode >> HCI_CMD_OGF_SHIFT) & HCI_CMD_OGF_MASK) |
| |
| #define HCI_CMD_OCF_MASK 0x3FF |
| #define HCI_CMD_OCF_SHIFT 0 |
| #define HCI_CMD_GET_OCF(opcode) (((opcode) >> HCI_CMD_OCF_SHIFT) & HCI_CMD_OCF_MASK) |
| |
| #define HCI_FORM_OPCODE(ocf, ogf) ((ocf & HCI_CMD_OCF_MASK) << HCI_CMD_OCF_SHIFT | \ |
| (ogf & HCI_CMD_OGF_MASK) << HCI_CMD_OGF_SHIFT) |
| |
| |
| /*======== HCI Opcode groups ===============*/ |
| #define OGF_NOP 0x00 |
| #define OGF_LINK_CONTROL 0x01 |
| #define OGF_LINK_POLICY 0x03 |
| #define OGF_INFO_PARAMS 0x04 |
| #define OGF_STATUS 0x05 |
| #define OGF_TESTING 0x06 |
| #define OGF_BLUETOOTH 0x3E |
| #define OGF_VENDOR_DEBUG 0x3F |
| |
| |
| |
| #define OCF_NOP 0x00 |
| |
| |
| /*===== Link Control Commands Opcode===================*/ |
| #define OCF_HCI_Create_Physical_Link 0x35 |
| #define OCF_HCI_Accept_Physical_Link_Req 0x36 |
| #define OCF_HCI_Disconnect_Physical_Link 0x37 |
| #define OCF_HCI_Create_Logical_Link 0x38 |
| #define OCF_HCI_Accept_Logical_Link 0x39 |
| #define OCF_HCI_Disconnect_Logical_Link 0x3A |
| #define OCF_HCI_Logical_Link_Cancel 0x3B |
| #define OCF_HCI_Flow_Spec_Modify 0x3C |
| |
| |
| |
| /*===== Link Policy Commands Opcode====================*/ |
| #define OCF_HCI_Set_Event_Mask 0x01 |
| #define OCF_HCI_Reset 0x03 |
| #define OCF_HCI_Read_Conn_Accept_Timeout 0x15 |
| #define OCF_HCI_Write_Conn_Accept_Timeout 0x16 |
| #define OCF_HCI_Read_Link_Supervision_Timeout 0x36 |
| #define OCF_HCI_Write_Link_Supervision_Timeout 0x37 |
| #define OCF_HCI_Enhanced_Flush 0x5F |
| #define OCF_HCI_Read_Logical_Link_Accept_Timeout 0x61 |
| #define OCF_HCI_Write_Logical_Link_Accept_Timeout 0x62 |
| #define OCF_HCI_Set_Event_Mask_Page_2 0x63 |
| #define OCF_HCI_Read_Location_Data 0x64 |
| #define OCF_HCI_Write_Location_Data 0x65 |
| #define OCF_HCI_Read_Flow_Control_Mode 0x66 |
| #define OCF_HCI_Write_Flow_Control_Mode 0x67 |
| #define OCF_HCI_Read_BE_Flush_Timeout 0x69 |
| #define OCF_HCI_Write_BE_Flush_Timeout 0x6A |
| #define OCF_HCI_Short_Range_Mode 0x6B |
| |
| |
| /*======== Info Commands Opcode========================*/ |
| #define OCF_HCI_Read_Local_Ver_Info 0x01 |
| #define OCF_HCI_Read_Local_Supported_Cmds 0x02 |
| #define OCF_HCI_Read_Data_Block_Size 0x0A |
| /*======== Status Commands Opcode======================*/ |
| #define OCF_HCI_Read_Failed_Contact_Counter 0x01 |
| #define OCF_HCI_Reset_Failed_Contact_Counter 0x02 |
| #define OCF_HCI_Read_Link_Quality 0x03 |
| #define OCF_HCI_Read_RSSI 0x05 |
| #define OCF_HCI_Read_Local_AMP_Info 0x09 |
| #define OCF_HCI_Read_Local_AMP_ASSOC 0x0A |
| #define OCF_HCI_Write_Remote_AMP_ASSOC 0x0B |
| |
| |
| /*======= AMP_ASSOC Specific TLV tags =================*/ |
| #define AMP_ASSOC_MAC_ADDRESS_INFO_TYPE 0x1 |
| #define AMP_ASSOC_PREF_CHAN_LIST 0x2 |
| #define AMP_ASSOC_CONNECTED_CHAN 0x3 |
| #define AMP_ASSOC_PAL_CAPABILITIES 0x4 |
| #define AMP_ASSOC_PAL_VERSION 0x5 |
| |
| |
| /*========= PAL Events =================================*/ |
| #define PAL_COMMAND_COMPLETE_EVENT 0x0E |
| #define PAL_COMMAND_STATUS_EVENT 0x0F |
| #define PAL_HARDWARE_ERROR_EVENT 0x10 |
| #define PAL_FLUSH_OCCURRED_EVENT 0x11 |
| #define PAL_LOOPBACK_EVENT 0x19 |
| #define PAL_BUFFER_OVERFLOW_EVENT 0x1A |
| #define PAL_QOS_VIOLATION_EVENT 0x1E |
| #define PAL_ENHANCED_FLUSH_COMPLT_EVENT 0x39 |
| #define PAL_PHYSICAL_LINK_COMPL_EVENT 0x40 |
| #define PAL_CHANNEL_SELECT_EVENT 0x41 |
| #define PAL_DISCONNECT_PHYSICAL_LINK_EVENT 0x42 |
| #define PAL_PHY_LINK_EARLY_LOSS_WARNING_EVENT 0x43 |
| #define PAL_PHY_LINK_RECOVERY_EVENT 0x44 |
| #define PAL_LOGICAL_LINK_COMPL_EVENT 0x45 |
| #define PAL_DISCONNECT_LOGICAL_LINK_COMPL_EVENT 0x46 |
| #define PAL_FLOW_SPEC_MODIFY_COMPL_EVENT 0x47 |
| #define PAL_NUM_COMPL_DATA_BLOCK_EVENT 0x48 |
| #define PAL_SHORT_RANGE_MODE_CHANGE_COMPL_EVENT 0x4C |
| #define PAL_AMP_STATUS_CHANGE_EVENT 0x4D |
| /*======== End of PAL events definiton =================*/ |
| |
| |
| /*======== Timeouts (not part of HCI cmd, but input to PAL engine) =========*/ |
| #define Timer_Conn_Accept_TO 0x01 |
| #define Timer_Link_Supervision_TO 0x02 |
| |
| #define NUM_HCI_COMMAND_PKTS 0x1 |
| |
| |
| /*====== NOP Cmd ============================*/ |
| #define HCI_CMD_NOP HCI_FORM_OPCODE(OCF_NOP, OGF_NOP) |
| |
| |
| /*===== Link Control Commands================*/ |
| #define HCI_Create_Physical_Link HCI_FORM_OPCODE(OCF_HCI_Create_Physical_Link, OGF_LINK_CONTROL) |
| #define HCI_Accept_Physical_Link_Req HCI_FORM_OPCODE(OCF_HCI_Accept_Physical_Link_Req, OGF_LINK_CONTROL) |
| #define HCI_Disconnect_Physical_Link HCI_FORM_OPCODE(OCF_HCI_Disconnect_Physical_Link, OGF_LINK_CONTROL) |
| #define HCI_Create_Logical_Link HCI_FORM_OPCODE(OCF_HCI_Create_Logical_Link, OGF_LINK_CONTROL) |
| #define HCI_Accept_Logical_Link HCI_FORM_OPCODE(OCF_HCI_Accept_Logical_Link, OGF_LINK_CONTROL) |
| #define HCI_Disconnect_Logical_Link HCI_FORM_OPCODE(OCF_HCI_Disconnect_Logical_Link, OGF_LINK_CONTROL) |
| #define HCI_Logical_Link_Cancel HCI_FORM_OPCODE(OCF_HCI_Logical_Link_Cancel, OGF_LINK_CONTROL) |
| #define HCI_Flow_Spec_Modify HCI_FORM_OPCODE(OCF_HCI_Flow_Spec_Modify, OGF_LINK_CONTROL) |
| |
| |
| /*===== Link Policy Commands ================*/ |
| #define HCI_Set_Event_Mask HCI_FORM_OPCODE(OCF_HCI_Set_Event_Mask, OGF_LINK_POLICY) |
| #define HCI_Reset HCI_FORM_OPCODE(OCF_HCI_Reset, OGF_LINK_POLICY) |
| #define HCI_Enhanced_Flush HCI_FORM_OPCODE(OCF_HCI_Enhanced_Flush, OGF_LINK_POLICY) |
| #define HCI_Read_Conn_Accept_Timeout HCI_FORM_OPCODE(OCF_HCI_Read_Conn_Accept_Timeout, OGF_LINK_POLICY) |
| #define HCI_Write_Conn_Accept_Timeout HCI_FORM_OPCODE(OCF_HCI_Write_Conn_Accept_Timeout, OGF_LINK_POLICY) |
| #define HCI_Read_Logical_Link_Accept_Timeout HCI_FORM_OPCODE(OCF_HCI_Read_Logical_Link_Accept_Timeout, OGF_LINK_POLICY) |
| #define HCI_Write_Logical_Link_Accept_Timeout HCI_FORM_OPCODE(OCF_HCI_Write_Logical_Link_Accept_Timeout, OGF_LINK_POLICY) |
| #define HCI_Read_Link_Supervision_Timeout HCI_FORM_OPCODE(OCF_HCI_Read_Link_Supervision_Timeout, OGF_LINK_POLICY) |
| #define HCI_Write_Link_Supervision_Timeout HCI_FORM_OPCODE(OCF_HCI_Write_Link_Supervision_Timeout, OGF_LINK_POLICY) |
| #define HCI_Read_Location_Data HCI_FORM_OPCODE(OCF_HCI_Read_Location_Data, OGF_LINK_POLICY) |
| #define HCI_Write_Location_Data HCI_FORM_OPCODE(OCF_HCI_Write_Location_Data, OGF_LINK_POLICY) |
| #define HCI_Set_Event_Mask_Page_2 HCI_FORM_OPCODE(OCF_HCI_Set_Event_Mask_Page_2, OGF_LINK_POLICY) |
| #define HCI_Read_Flow_Control_Mode HCI_FORM_OPCODE(OCF_HCI_Read_Flow_Control_Mode, OGF_LINK_POLICY) |
| #define HCI_Write_Flow_Control_Mode HCI_FORM_OPCODE(OCF_HCI_Write_Flow_Control_Mode, OGF_LINK_POLICY) |
| #define HCI_Write_BE_Flush_Timeout HCI_FORM_OPCODE(OCF_HCI_Write_BE_Flush_Timeout, OGF_LINK_POLICY) |
| #define HCI_Read_BE_Flush_Timeout HCI_FORM_OPCODE(OCF_HCI_Read_BE_Flush_Timeout, OGF_LINK_POLICY) |
| #define HCI_Short_Range_Mode HCI_FORM_OPCODE(OCF_HCI_Short_Range_Mode, OGF_LINK_POLICY) |
| |
| |
| /*===== Info Commands =====================*/ |
| #define HCI_Read_Local_Ver_Info HCI_FORM_OPCODE(OCF_HCI_Read_Local_Ver_Info, OGF_INFO_PARAMS) |
| #define HCI_Read_Local_Supported_Cmds HCI_FORM_OPCODE(OCF_HCI_Read_Local_Supported_Cmds, OGF_INFO_PARAMS) |
| #define HCI_Read_Data_Block_Size HCI_FORM_OPCODE(OCF_HCI_Read_Data_Block_Size, OGF_INFO_PARAMS) |
| |
| /*===== Status Commands =====================*/ |
| #define HCI_Read_Link_Quality HCI_FORM_OPCODE(OCF_HCI_Read_Link_Quality, OGF_STATUS) |
| #define HCI_Read_RSSI HCI_FORM_OPCODE(OCF_HCI_Read_RSSI, OGF_STATUS) |
| #define HCI_Read_Local_AMP_Info HCI_FORM_OPCODE(OCF_HCI_Read_Local_AMP_Info, OGF_STATUS) |
| #define HCI_Read_Local_AMP_ASSOC HCI_FORM_OPCODE(OCF_HCI_Read_Local_AMP_ASSOC, OGF_STATUS) |
| #define HCI_Write_Remote_AMP_ASSOC HCI_FORM_OPCODE(OCF_HCI_Write_Remote_AMP_ASSOC, OGF_STATUS) |
| |
| /*====== End of cmd definitions =============*/ |
| |
| |
| |
| /*===== Timeouts(private - can't come from HCI)=================*/ |
| #define Conn_Accept_TO HCI_FORM_OPCODE(Timer_Conn_Accept_TO, OGF_VENDOR_DEBUG) |
| #define Link_Supervision_TO HCI_FORM_OPCODE(Timer_Link_Supervision_TO, OGF_VENDOR_DEBUG) |
| |
| /*----- PAL Constants (Sec 6 of Doc)------------------------*/ |
| #define Max80211_PAL_PDU_Size 1492 |
| #define Max80211_AMP_ASSOC_Len 672 |
| #define MinGUserPrio 4 |
| #define MaxGUserPrio 7 |
| #define BEUserPrio0 0 |
| #define BEUserPrio1 3 |
| #define Max80211BeaconPeriod 2000 /* in millisec */ |
| #define ShortRangeModePowerMax 4 /* dBm */ |
| |
| /*------ PAL Protocol Identifiers (Sec5.1) ------------------*/ |
| typedef enum { |
| ACL_DATA = 0x01, |
| ACTIVITY_REPORT, |
| SECURED_FRAMES, |
| LINK_SUPERVISION_REQ, |
| LINK_SUPERVISION_RESP, |
| }PAL_PROTOCOL_IDENTIFIERS; |
| |
| #define HCI_CMD_HDR_SZ 3 |
| #define HCI_EVENT_HDR_SIZE 2 |
| #define MAX_EVT_PKT_SZ 255 |
| #define AMP_ASSOC_MAX_FRAG_SZ 248 |
| #define AMP_MAX_GUARANTEED_BW 20000 |
| |
| #define DEFAULT_CONN_ACCPT_TO 5000 |
| #define DEFAULT_LL_ACCPT_TO 5000 |
| #define DEFAULT_LSTO 10000 |
| |
| #define PACKET_BASED_FLOW_CONTROL_MODE 0x00 |
| #define DATA_BLK_BASED_FLOW_CONTROL_MODE 0x01 |
| |
| #define SERVICE_TYPE_BEST_EFFORT 0x01 |
| #define SERVICE_TYPE_GUARANTEED 0x02 |
| |
| #define MAC_ADDR_LEN 6 |
| #define LINK_KEY_LEN 32 |
| |
| typedef enum { |
| ACL_DATA_PB_1ST_NON_AUTOMATICALLY_FLUSHABLE = 0x00, |
| ACL_DATA_PB_CONTINUING_FRAGMENT = 0x01, |
| ACL_DATA_PB_1ST_AUTOMATICALLY_FLUSHABLE = 0x02, |
| ACL_DATA_PB_COMPLETE_PDU = 0x03, |
| } ACL_DATA_PB_FLAGS; |
| #define ACL_DATA_PB_FLAGS_SHIFT 12 |
| |
| typedef enum { |
| ACL_DATA_BC_POINT_TO_POINT = 0x00, |
| } ACL_DATA_BC_FLAGS; |
| #define ACL_DATA_BC_FLAGS_SHIFT 14 |
| |
| /* Command pkt */ |
| typedef struct hci_cmd_pkt_t { |
| A_UINT16 opcode; |
| A_UINT8 param_length; |
| A_UINT8 params[255]; |
| } POSTPACK HCI_CMD_PKT; |
| |
| #define ACL_DATA_HDR_SIZE 4 /* hdl_and flags + data_len */ |
| /* Data pkt */ |
| typedef struct hci_acl_data_pkt_t { |
| A_UINT16 hdl_and_flags; |
| A_UINT16 data_len; |
| A_UINT8 data[Max80211_PAL_PDU_Size]; |
| } POSTPACK HCI_ACL_DATA_PKT; |
| |
| /* Event pkt */ |
| typedef struct hci_event_pkt_t { |
| A_UINT8 event_code; |
| A_UINT8 param_len; |
| A_UINT8 params[256]; |
| } POSTPACK HCI_EVENT_PKT; |
| |
| |
| /*============== HCI Command definitions ======================= */ |
| typedef struct hci_cmd_phy_link_t { |
| A_UINT16 opcode; |
| A_UINT8 param_length; |
| A_UINT8 phy_link_hdl; |
| A_UINT8 link_key_len; |
| A_UINT8 link_key_type; |
| A_UINT8 link_key[LINK_KEY_LEN]; |
| } POSTPACK HCI_CMD_PHY_LINK; |
| |
| typedef struct hci_cmd_write_rem_amp_assoc_t { |
| A_UINT16 opcode; |
| A_UINT8 param_length; |
| A_UINT8 phy_link_hdl; |
| A_UINT16 len_so_far; |
| A_UINT16 amp_assoc_remaining_len; |
| A_UINT8 amp_assoc_frag[AMP_ASSOC_MAX_FRAG_SZ]; |
| } POSTPACK HCI_CMD_WRITE_REM_AMP_ASSOC; |
| |
| |
| typedef struct hci_cmd_opcode_hdl_t { |
| A_UINT16 opcode; |
| A_UINT8 param_length; |
| A_UINT16 hdl; |
| } POSTPACK HCI_CMD_READ_LINK_QUAL, |
| HCI_CMD_FLUSH, |
| HCI_CMD_READ_LINK_SUPERVISION_TIMEOUT; |
| |
| typedef struct hci_cmd_read_local_amp_assoc_t { |
| A_UINT16 opcode; |
| A_UINT8 param_length; |
| A_UINT8 phy_link_hdl; |
| A_UINT16 len_so_far; |
| A_UINT16 max_rem_amp_assoc_len; |
| } POSTPACK HCI_CMD_READ_LOCAL_AMP_ASSOC; |
| |
| |
| typedef struct hci_cmd_set_event_mask_t { |
| A_UINT16 opcode; |
| A_UINT8 param_length; |
| A_UINT64 mask; |
| }POSTPACK HCI_CMD_SET_EVT_MASK, HCI_CMD_SET_EVT_MASK_PG_2; |
| |
| |
| typedef struct hci_cmd_enhanced_flush_t{ |
| A_UINT16 opcode; |
| A_UINT8 param_length; |
| A_UINT16 hdl; |
| A_UINT8 type; |
| } POSTPACK HCI_CMD_ENHANCED_FLUSH; |
| |
| |
| typedef struct hci_cmd_write_timeout_t { |
| A_UINT16 opcode; |
| A_UINT8 param_length; |
| A_UINT16 timeout; |
| } POSTPACK HCI_CMD_WRITE_TIMEOUT; |
| |
| typedef struct hci_cmd_write_link_supervision_timeout_t { |
| A_UINT16 opcode; |
| A_UINT8 param_length; |
| A_UINT16 hdl; |
| A_UINT16 timeout; |
| } POSTPACK HCI_CMD_WRITE_LINK_SUPERVISION_TIMEOUT; |
| |
| typedef struct hci_cmd_write_flow_control_t { |
| A_UINT16 opcode; |
| A_UINT8 param_length; |
| A_UINT8 mode; |
| } POSTPACK HCI_CMD_WRITE_FLOW_CONTROL; |
| |
| typedef struct location_data_cfg_t { |
| A_UINT8 reg_domain_aware; |
| A_UINT8 reg_domain[3]; |
| A_UINT8 reg_options; |
| } POSTPACK LOCATION_DATA_CFG; |
| |
| typedef struct hci_cmd_write_location_data_t { |
| A_UINT16 opcode; |
| A_UINT8 param_length; |
| LOCATION_DATA_CFG cfg; |
| } POSTPACK HCI_CMD_WRITE_LOCATION_DATA; |
| |
| |
| typedef struct flow_spec_t { |
| A_UINT8 id; |
| A_UINT8 service_type; |
| A_UINT16 max_sdu; |
| A_UINT32 sdu_inter_arrival_time; |
| A_UINT32 access_latency; |
| A_UINT32 flush_timeout; |
| } POSTPACK FLOW_SPEC; |
| |
| |
| typedef struct hci_cmd_create_logical_link_t { |
| A_UINT16 opcode; |
| A_UINT8 param_length; |
| A_UINT8 phy_link_hdl; |
| FLOW_SPEC tx_flow_spec; |
| FLOW_SPEC rx_flow_spec; |
| } POSTPACK HCI_CMD_CREATE_LOGICAL_LINK; |
| |
| typedef struct hci_cmd_flow_spec_modify_t { |
| A_UINT16 opcode; |
| A_UINT8 param_length; |
| A_UINT16 hdl; |
| FLOW_SPEC tx_flow_spec; |
| FLOW_SPEC rx_flow_spec; |
| } POSTPACK HCI_CMD_FLOW_SPEC_MODIFY; |
| |
| typedef struct hci_cmd_logical_link_cancel_t { |
| A_UINT16 opcode; |
| A_UINT8 param_length; |
| A_UINT8 phy_link_hdl; |
| A_UINT8 tx_flow_spec_id; |
| } POSTPACK HCI_CMD_LOGICAL_LINK_CANCEL; |
| |
| typedef struct hci_cmd_disconnect_logical_link_t { |
| A_UINT16 opcode; |
| A_UINT8 param_length; |
| A_UINT16 logical_link_hdl; |
| } POSTPACK HCI_CMD_DISCONNECT_LOGICAL_LINK; |
| |
| typedef struct hci_cmd_disconnect_phy_link_t { |
| A_UINT16 opcode; |
| A_UINT8 param_length; |
| A_UINT8 phy_link_hdl; |
| } POSTPACK HCI_CMD_DISCONNECT_PHY_LINK; |
| |
| typedef struct hci_cmd_srm_t { |
| A_UINT16 opcode; |
| A_UINT8 param_length; |
| A_UINT8 phy_link_hdl; |
| A_UINT8 mode; |
| } POSTPACK HCI_CMD_SHORT_RANGE_MODE; |
| /*============== HCI Command definitions end ======================= */ |
| |
| |
| |
| /*============== HCI Event definitions ============================= */ |
| |
| /* Command complete event */ |
| typedef struct hci_event_cmd_complete_t { |
| A_UINT8 event_code; |
| A_UINT8 param_len; |
| A_UINT8 num_hci_cmd_pkts; |
| A_UINT16 opcode; |
| A_UINT8 params[255]; |
| } POSTPACK HCI_EVENT_CMD_COMPLETE; |
| |
| |
| /* Command status event */ |
| typedef struct hci_event_cmd_status_t { |
| A_UINT8 event_code; |
| A_UINT8 param_len; |
| A_UINT8 status; |
| A_UINT8 num_hci_cmd_pkts; |
| A_UINT16 opcode; |
| } POSTPACK HCI_EVENT_CMD_STATUS; |
| |
| /* Hardware Error event */ |
| typedef struct hci_event_hw_err_t { |
| A_UINT8 event_code; |
| A_UINT8 param_len; |
| A_UINT8 hw_err_code; |
| } POSTPACK HCI_EVENT_HW_ERR; |
| |
| /* Flush occured event */ |
| /* Qos Violation event */ |
| typedef struct hci_event_handle_t { |
| A_UINT8 event_code; |
| A_UINT8 param_len; |
| A_UINT16 handle; |
| } POSTPACK HCI_EVENT_FLUSH_OCCRD, |
| HCI_EVENT_QOS_VIOLATION; |
| |
| /* Loopback command event */ |
| typedef struct hci_loopback_cmd_t { |
| A_UINT8 event_code; |
| A_UINT8 param_len; |
| A_UINT8 params[252]; |
| } POSTPACK HCI_EVENT_LOOPBACK_CMD; |
| |
| /* Data buffer overflow event */ |
| typedef struct hci_data_buf_overflow_t { |
| A_UINT8 event_code; |
| A_UINT8 param_len; |
| A_UINT8 link_type; |
| } POSTPACK HCI_EVENT_DATA_BUF_OVERFLOW; |
| |
| /* Enhanced Flush complete event */ |
| typedef struct hci_enhanced_flush_complt_t{ |
| A_UINT8 event_code; |
| A_UINT8 param_len; |
| A_UINT16 hdl; |
| } POSTPACK HCI_EVENT_ENHANCED_FLUSH_COMPLT; |
| |
| /* Channel select event */ |
| typedef struct hci_event_chan_select_t { |
| A_UINT8 event_code; |
| A_UINT8 param_len; |
| A_UINT8 phy_link_hdl; |
| } POSTPACK HCI_EVENT_CHAN_SELECT; |
| |
| /* Physical Link Complete event */ |
| typedef struct hci_event_phy_link_complete_event_t { |
| A_UINT8 event_code; |
| A_UINT8 param_len; |
| A_UINT8 status; |
| A_UINT8 phy_link_hdl; |
| } POSTPACK HCI_EVENT_PHY_LINK_COMPLETE; |
| |
| /* Logical Link complete event */ |
| typedef struct hci_event_logical_link_complete_event_t { |
| A_UINT8 event_code; |
| A_UINT8 param_len; |
| A_UINT8 status; |
| A_UINT16 logical_link_hdl; |
| A_UINT8 phy_hdl; |
| A_UINT8 tx_flow_id; |
| } POSTPACK HCI_EVENT_LOGICAL_LINK_COMPLETE_EVENT; |
| |
| /* Disconnect Logical Link complete event */ |
| typedef struct hci_event_disconnect_logical_link_event_t { |
| A_UINT8 event_code; |
| A_UINT8 param_len; |
| A_UINT8 status; |
| A_UINT16 logical_link_hdl; |
| A_UINT8 reason; |
| } POSTPACK HCI_EVENT_DISCONNECT_LOGICAL_LINK_EVENT; |
| |
| /* Disconnect Physical Link complete event */ |
| typedef struct hci_event_disconnect_phy_link_complete_t { |
| A_UINT8 event_code; |
| A_UINT8 param_len; |
| A_UINT8 status; |
| A_UINT8 phy_link_hdl; |
| A_UINT8 reason; |
| } POSTPACK HCI_EVENT_DISCONNECT_PHY_LINK_COMPLETE; |
| |
| typedef struct hci_event_physical_link_loss_early_warning_t{ |
| A_UINT8 event_code; |
| A_UINT8 param_len; |
| A_UINT8 phy_hdl; |
| A_UINT8 reason; |
| } POSTPACK HCI_EVENT_PHY_LINK_LOSS_EARLY_WARNING; |
| |
| typedef struct hci_event_physical_link_recovery_t{ |
| A_UINT8 event_code; |
| A_UINT8 param_len; |
| A_UINT8 phy_hdl; |
| } POSTPACK HCI_EVENT_PHY_LINK_RECOVERY; |
| |
| |
| /* Flow spec modify complete event */ |
| /* Flush event */ |
| typedef struct hci_event_status_handle_t { |
| A_UINT8 event_code; |
| A_UINT8 param_len; |
| A_UINT8 status; |
| A_UINT16 handle; |
| } POSTPACK HCI_EVENT_FLOW_SPEC_MODIFY, |
| HCI_EVENT_FLUSH; |
| |
| |
| /* Num of completed data blocks event */ |
| typedef struct hci_event_num_of_compl_data_blks_t { |
| A_UINT8 event_code; |
| A_UINT8 param_len; |
| A_UINT16 num_data_blks; |
| A_UINT8 num_handles; |
| A_UINT8 params[255]; |
| } POSTPACK HCI_EVENT_NUM_COMPL_DATA_BLKS; |
| |
| /* Short range mode change complete event */ |
| typedef struct hci_srm_cmpl_t { |
| A_UINT8 event_code; |
| A_UINT8 param_len; |
| A_UINT8 status; |
| A_UINT8 phy_link; |
| A_UINT8 state; |
| } POSTPACK HCI_EVENT_SRM_COMPL; |
| |
| typedef struct hci_event_amp_status_change_t{ |
| A_UINT8 event_code; |
| A_UINT8 param_len; |
| A_UINT8 status; |
| A_UINT8 amp_status; |
| } POSTPACK HCI_EVENT_AMP_STATUS_CHANGE; |
| |
| /*============== Event definitions end =========================== */ |
| |
| |
| typedef struct local_amp_info_resp_t { |
| A_UINT8 status; |
| A_UINT8 amp_status; |
| A_UINT32 total_bw; /* kbps */ |
| A_UINT32 max_guranteed_bw; /* kbps */ |
| A_UINT32 min_latency; |
| A_UINT32 max_pdu_size; |
| A_UINT8 amp_type; |
| A_UINT16 pal_capabilities; |
| A_UINT16 amp_assoc_len; |
| A_UINT32 max_flush_timeout; /* in ms */ |
| A_UINT32 be_flush_timeout; /* in ms */ |
| } POSTPACK LOCAL_AMP_INFO; |
| |
| typedef struct amp_assoc_cmd_resp_t{ |
| A_UINT8 status; |
| A_UINT8 phy_hdl; |
| A_UINT16 amp_assoc_len; |
| A_UINT8 amp_assoc_frag[AMP_ASSOC_MAX_FRAG_SZ]; |
| }POSTPACK AMP_ASSOC_CMD_RESP; |
| |
| |
| enum PAL_HCI_CMD_STATUS { |
| PAL_HCI_CMD_PROCESSED, |
| PAL_HCI_CMD_IGNORED |
| }; |
| |
| |
| /*============= HCI Error Codes =======================*/ |
| #define HCI_SUCCESS 0x00 |
| #define HCI_ERR_UNKNOW_CMD 0x01 |
| #define HCI_ERR_UNKNOWN_CONN_ID 0x02 |
| #define HCI_ERR_HW_FAILURE 0x03 |
| #define HCI_ERR_PAGE_TIMEOUT 0x04 |
| #define HCI_ERR_AUTH_FAILURE 0x05 |
| #define HCI_ERR_KEY_MISSING 0x06 |
| #define HCI_ERR_MEM_CAP_EXECED 0x07 |
| #define HCI_ERR_CON_TIMEOUT 0x08 |
| #define HCI_ERR_CON_LIMIT_EXECED 0x09 |
| #define HCI_ERR_ACL_CONN_ALRDY_EXISTS 0x0B |
| #define HCI_ERR_COMMAND_DISALLOWED 0x0C |
| #define HCI_ERR_CONN_REJ_BY_LIMIT_RES 0x0D |
| #define HCI_ERR_CONN_REJ_BY_SEC 0x0E |
| #define HCI_ERR_CONN_REJ_BY_BAD_ADDR 0x0F |
| #define HCI_ERR_CONN_ACCPT_TIMEOUT 0x10 |
| #define HCI_ERR_UNSUPPORT_FEATURE 0x11 |
| #define HCI_ERR_INVALID_HCI_CMD_PARAMS 0x12 |
| #define HCI_ERR_REMOTE_USER_TERMINATE_CONN 0x13 |
| #define HCI_ERR_CON_TERM_BY_HOST 0x16 |
| #define HCI_ERR_UNSPECIFIED_ERROR 0x1F |
| #define HCI_ERR_ENCRYPTION_MODE_NOT_SUPPORT 0x25 |
| #define HCI_ERR_REQUESTED_QOS_NOT_SUPPORT 0x27 |
| #define HCI_ERR_QOS_UNACCEPTABLE_PARM 0x2C |
| #define HCI_ERR_QOS_REJECTED 0x2D |
| #define HCI_ERR_CONN_REJ_NO_SUITABLE_CHAN 0x39 |
| |
| /*============= HCI Error Codes End =======================*/ |
| |
| |
| /* Following are event return parameters.. part of HCI events |
| */ |
| typedef struct timeout_read_t { |
| A_UINT8 status; |
| A_UINT16 timeout; |
| }POSTPACK TIMEOUT_INFO; |
| |
| typedef struct link_supervision_timeout_read_t { |
| A_UINT8 status; |
| A_UINT16 hdl; |
| A_UINT16 timeout; |
| }POSTPACK LINK_SUPERVISION_TIMEOUT_INFO; |
| |
| typedef struct status_hdl_t { |
| A_UINT8 status; |
| A_UINT16 hdl; |
| }POSTPACK INFO_STATUS_HDL; |
| |
| typedef struct write_remote_amp_assoc_t{ |
| A_UINT8 status; |
| A_UINT8 hdl; |
| }POSTPACK WRITE_REMOTE_AMP_ASSOC_INFO; |
| |
| typedef struct read_loc_info_t { |
| A_UINT8 status; |
| LOCATION_DATA_CFG loc; |
| }POSTPACK READ_LOC_INFO; |
| |
| typedef struct read_flow_ctrl_mode_t { |
| A_UINT8 status; |
| A_UINT8 mode; |
| }POSTPACK READ_FLWCTRL_INFO; |
| |
| typedef struct read_data_blk_size_t { |
| A_UINT8 status; |
| A_UINT16 max_acl_data_pkt_len; |
| A_UINT16 data_block_len; |
| A_UINT16 total_num_data_blks; |
| }POSTPACK READ_DATA_BLK_SIZE_INFO; |
| |
| /* Read Link quality info */ |
| typedef struct link_qual_t { |
| A_UINT8 status; |
| A_UINT16 hdl; |
| A_UINT8 link_qual; |
| } POSTPACK READ_LINK_QUAL_INFO, |
| READ_RSSI_INFO; |
| |
| typedef struct ll_cancel_resp_t { |
| A_UINT8 status; |
| A_UINT8 phy_link_hdl; |
| A_UINT8 tx_flow_spec_id; |
| } POSTPACK LL_CANCEL_RESP; |
| |
| typedef struct read_local_ver_info_t { |
| A_UINT8 status; |
| A_UINT8 hci_version; |
| A_UINT16 hci_revision; |
| A_UINT8 pal_version; |
| A_UINT16 manf_name; |
| A_UINT16 pal_sub_ver; |
| } POSTPACK READ_LOCAL_VER_INFO; |
| |
| |
| #endif /* __A_HCI_H__ */ |