From a48d8b4639f36e6fc2d7e87cac92e178674caaa1 Mon Sep 17 00:00:00 2001 From: Max Krasnyansky Date: Fri, 8 Mar 2002 21:10:06 +0000 Subject: Initial revision --- include/hci.h | 768 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 768 insertions(+) create mode 100644 include/hci.h (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h new file mode 100644 index 00000000..3f98ab1d --- /dev/null +++ b/include/hci.h @@ -0,0 +1,768 @@ +/* + BlueZ - Bluetooth protocol stack for Linux + Copyright (C) 2000-2001 Qualcomm Incorporated + + Written 2000,2001 by Maxim Krasnyansky + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License version 2 as + published by the Free Software Foundation; + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. + IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY + CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, + COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS + SOFTWARE IS DISCLAIMED. +*/ + +/* + * $Id$ + */ + +#ifndef __HCI_H +#define __HCI_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define HCI_MAX_DEV 4 + +#define HCI_MAX_ACL_SIZE 1024 +#define HCI_MAX_SCO_SIZE 255 +#define HCI_MAX_EVENT_SIZE 260 +#define HCI_MAX_FRAME_SIZE (HCI_MAX_ACL_SIZE + 4) + +/* HCI dev events */ +#define HCI_DEV_REG 1 +#define HCI_DEV_UNREG 2 +#define HCI_DEV_UP 3 +#define HCI_DEV_DOWN 4 + +/* HCI device types */ +#define HCI_VHCI 0 +#define HCI_USB 1 +#define HCI_PCCARD 2 +#define HCI_UART 3 +#define HCI_RS232 4 + +/* HCI device flags */ +enum { + HCI_UP, + HCI_INIT, + HCI_RUNNING, + + HCI_PSCAN, + HCI_ISCAN, + HCI_AUTH, + HCI_ENCRYPT, + HCI_INQUIRY, + + HCI_RAW +}; + +/* HCI ioctl defines */ +#define HCIDEVUP _IOW('H', 201, int) +#define HCIDEVDOWN _IOW('H', 202, int) +#define HCIDEVRESET _IOW('H', 203, int) +#define HCIDEVRESTAT _IOW('H', 204, int) + +#define HCIGETDEVLIST _IOR('H', 210, int) +#define HCIGETDEVINFO _IOR('H', 211, int) +#define HCIGETCONNLIST _IOR('H', 212, int) +#define HCIGETCONNINFO _IOR('H', 213, int) + +#define HCISETRAW _IOW('H', 220, int) +#define HCISETSCAN _IOW('H', 221, int) +#define HCISETAUTH _IOW('H', 222, int) +#define HCISETENCRYPT _IOW('H', 223, int) +#define HCISETPTYPE _IOW('H', 224, int) +#define HCISETLINKPOL _IOW('H', 225, int) +#define HCISETLINKMODE _IOW('H', 226, int) + +#define HCIINQUIRY _IOR('H', 240, int) + +/* HCI timeouts */ + +#define HCI_CONN_TIMEOUT (HZ * 40) +#define HCI_DISCONN_TIMEOUT (HZ * 2) +#define HCI_CONN_IDLE_TIMEOUT (HZ * 60) + +#ifndef __NO_HCI_DEFS + +/* HCI Packet types */ +#define HCI_COMMAND_PKT 0x01 +#define HCI_ACLDATA_PKT 0x02 +#define HCI_SCODATA_PKT 0x03 +#define HCI_EVENT_PKT 0x04 +#define HCI_UNKNOWN_PKT 0xff + +/* HCI Packet types */ +#define HCI_DM1 0x0008 +#define HCI_DM3 0x0400 +#define HCI_DM5 0x4000 +#define HCI_DH1 0x0010 +#define HCI_DH3 0x0800 +#define HCI_DH5 0x8000 + +#define HCI_HV1 0x0020 +#define HCI_HV2 0x0040 +#define HCI_HV3 0x0080 + +#define SCO_PTYPE_MASK (HCI_HV1 | HCI_HV2 | HCI_HV3) +#define ACL_PTYPE_MASK (~SCO_PTYPE_MASK) + +/* ACL flags */ +#define ACL_CONT 0x0001 +#define ACL_START 0x0002 +#define ACL_ACTIVE_BCAST 0x0010 +#define ACL_PICO_BCAST 0x0020 + +/* Baseband links */ +#define SCO_LINK 0x00 +#define ACL_LINK 0x01 + +/* LMP features */ +#define LMP_3SLOT 0x01 +#define LMP_5SLOT 0x02 +#define LMP_ENCRYPT 0x04 +#define LMP_SOFFSET 0x08 +#define LMP_TACCURACY 0x10 +#define LMP_RSWITCH 0x20 +#define LMP_HOLD 0x40 +#define LMP_SNIF 0x80 + +#define LMP_PARK 0x01 +#define LMP_RSSI 0x02 +#define LMP_QUALITY 0x04 +#define LMP_SCO 0x08 +#define LMP_HV2 0x10 +#define LMP_HV3 0x20 +#define LMP_ULAW 0x40 +#define LMP_ALAW 0x80 + +#define LMP_CVSD 0x01 +#define LMP_PSCHEME 0x02 +#define LMP_PCONTROL 0x04 + +/* Link policies */ +#define HCI_LP_RSWITCH 0x0001 +#define HCI_LP_HOLD 0x0002 +#define HCI_LP_SNIFF 0x0004 +#define HCI_LP_PARK 0x0008 + +/* Link mode */ +#define HCI_LM_ACCEPT 0x8000 +#define HCI_LM_MASTER 0x0001 +#define HCI_LM_AUTH 0x0002 +#define HCI_LM_ENCRYPT 0x0004 +#define HCI_LM_TRUSTED 0x0008 + +/* ----- HCI Commands ----- */ +/* OGF & OCF values */ + +/* Informational Parameters */ +#define OGF_INFO_PARAM 0x04 + +#define OCF_READ_LOCAL_VERSION 0x0001 +typedef struct { + uint8_t status; + uint8_t hci_ver; + uint16_t hci_rev; + uint8_t lmp_ver; + uint16_t manufacturer; + uint16_t lmp_subver; +} __attribute__ ((packed)) read_local_version_rp; +#define READ_LOCAL_VERSION_RP_SIZE 9 + +#define OCF_READ_LOCAL_FEATURES 0x0003 +typedef struct { + uint8_t status; + uint8_t features[8]; +} __attribute__ ((packed)) read_local_features_rp; + +#define OCF_READ_BUFFER_SIZE 0x0005 +typedef struct { + uint8_t status; + uint16_t acl_mtu; + uint8_t sco_mtu; + uint16_t acl_max_pkt; + uint16_t sco_max_pkt; +} __attribute__ ((packed)) read_buffer_size_rp; + +#define OCF_READ_BD_ADDR 0x0009 +typedef struct { + uint8_t status; + bdaddr_t bdaddr; +} __attribute__ ((packed)) read_bd_addr_rp; + +/* Host Controller and Baseband */ +#define OGF_HOST_CTL 0x03 +#define OCF_RESET 0x0003 +#define OCF_READ_AUTH_ENABLE 0x001F +#define OCF_WRITE_AUTH_ENABLE 0x0020 + #define AUTH_DISABLED 0x00 + #define AUTH_ENABLED 0x01 + +#define OCF_READ_ENCRYPT_MODE 0x0021 +#define OCF_WRITE_ENCRYPT_MODE 0x0022 + #define ENCRYPT_DISABLED 0x00 + #define ENCRYPT_P2P 0x01 + #define ENCRYPT_BOTH 0x02 + +#define OCF_WRITE_CA_TIMEOUT 0x0016 +#define OCF_WRITE_PG_TIMEOUT 0x0018 + +#define OCF_WRITE_SCAN_ENABLE 0x001A + #define SCAN_DISABLED 0x00 + #define SCAN_INQUIRY 0x01 + #define SCAN_PAGE 0x02 + +#define OCF_SET_EVENT_FLT 0x0005 +typedef struct { + uint8_t flt_type; + uint8_t cond_type; + uint8_t condition[0]; +} __attribute__ ((packed)) set_event_flt_cp; +#define SET_EVENT_FLT_CP_SIZE 2 + +/* Filter types */ +#define FLT_CLEAR_ALL 0x00 +#define FLT_INQ_RESULT 0x01 +#define FLT_CONN_SETUP 0x02 + +/* CONN_SETUP Condition types */ +#define CONN_SETUP_ALLOW_ALL 0x00 +#define CONN_SETUP_ALLOW_CLASS 0x01 +#define CONN_SETUP_ALLOW_BDADDR 0x02 + +/* CONN_SETUP Conditions */ +#define CONN_SETUP_AUTO_OFF 0x01 +#define CONN_SETUP_AUTO_ON 0x02 + +#define OCF_CHANGE_LOCAL_NAME 0x0013 +typedef struct { + uint8_t name[248]; +} __attribute__ ((packed)) change_local_name_cp; +#define CHANGE_LOCAL_NAME_CP_SIZE 248 + +#define OCF_READ_LOCAL_NAME 0x0014 +typedef struct { + uint8_t status; + uint8_t name[248]; +} __attribute__ ((packed)) read_local_name_rp; +#define READ_LOCAL_NAME_RP_SIZE 249 + +#define OCF_READ_CLASS_OF_DEV 0x0023 +typedef struct { + uint8_t status; + uint8_t dev_class[3]; +} __attribute__ ((packed)) read_class_of_dev_rp; +#define READ_CLASS_OF_DEV_RP_SIZE 4 + +#define OCF_WRITE_CLASS_OF_DEV 0x0024 +typedef struct { + uint8_t dev_class[3]; +} __attribute__ ((packed)) write_class_of_dev_cp; +#define WRITE_CLASS_OF_DEV_CP_SIZE 3 + +#define OCF_HOST_BUFFER_SIZE 0x0033 +typedef struct { + uint16_t acl_mtu; + uint8_t sco_mtu; + uint16_t acl_max_pkt; + uint16_t sco_max_pkt; +} __attribute__ ((packed)) host_buffer_size_cp; +#define HOST_BUFFER_SIZE_CP_SIZE 7 + +/* Link Control */ +#define OGF_LINK_CTL 0x01 +#define OCF_CREATE_CONN 0x0005 +typedef struct { + bdaddr_t bdaddr; + uint16_t pkt_type; + uint8_t pscan_rep_mode; + uint8_t pscan_mode; + uint16_t clock_offset; + uint8_t role_switch; +} __attribute__ ((packed)) create_conn_cp; +#define CREATE_CONN_CP_SIZE 13 + +#define OCF_ACCEPT_CONN_REQ 0x0009 +typedef struct { + bdaddr_t bdaddr; + uint8_t role; +} __attribute__ ((packed)) accept_conn_req_cp; +#define ACCEPT_CONN_REQ_CP_SIZE 7 + +#define OCF_REJECT_CONN_REQ 0x000a +typedef struct { + bdaddr_t bdaddr; + uint8_t reason; +} __attribute__ ((packed)) reject_conn_req_cp; +#define REJECT_CONN_REQ_CP_SIZE 7 + +#define OCF_DISCONNECT 0x0006 +typedef struct { + uint16_t handle; + uint8_t reason; +} __attribute__ ((packed)) disconnect_cp; +#define DISCONNECT_CP_SIZE 3 + +#define OCF_ADD_SCO 0x0007 +typedef struct { + uint16_t handle; + uint16_t pkt_type; +} __attribute__ ((packed)) add_sco_cp; +#define ADD_SCO_CP_SIZE 4 + +#define OCF_INQUIRY 0x0001 +typedef struct { + uint8_t lap[3]; + uint8_t lenght; + uint8_t num_rsp; +} __attribute__ ((packed)) inquiry_cp; +#define INQUIRY_CP_SIZE 5 + +typedef struct { + uint8_t status; + bdaddr_t bdaddr; +} __attribute__ ((packed)) status_bdaddr_rp; +#define STATUS_BDADDR_RP_SIZE 7 + +#define OCF_LINK_KEY_REPLY 0x000B +#define OCF_LINK_KEY_NEG_REPLY 0x000C +typedef struct { + bdaddr_t bdaddr; + uint8_t link_key[16]; +} __attribute__ ((packed)) link_key_reply_cp; +#define LINK_KEY_REPLY_CP_SIZE 22 + +#define OCF_PIN_CODE_REPLY 0x000D +#define OCF_PIN_CODE_NEG_REPLY 0x000E +typedef struct { + bdaddr_t bdaddr; + uint8_t pin_len; + uint8_t pin_code[16]; +} __attribute__ ((packed)) pin_code_reply_cp; +#define PIN_CODE_REPLY_CP_SIZE 23 + +#define OCF_SET_CONN_PTYPE 0x000F +typedef struct { + uint16_t handle; + uint16_t pkt_type; +} __attribute__ ((packed)) set_conn_ptype_cp; +#define SET_CONN_PKT_TYPE_CP_SIZE 4 + +#define OCF_AUTH_REQUESTED 0x0011 +typedef struct { + uint16_t handle; +} __attribute__ ((packed)) auth_requested_cp; +#define AUTH_REQUESTED_CP_SIZE 2 + +#define OCF_SET_CONN_ENCRYPT 0x0013 +typedef struct { + uint16_t handle; + uint8_t encrypt; +} __attribute__ ((packed)) set_conn_encrypt_cp; +#define SET_CONN_ENCRYPT_CP_SIZE 3 + +#define OCF_REMOTE_NAME_REQ 0x0019 +typedef struct { + bdaddr_t bdaddr; + uint8_t pscan_rep_mode; + uint8_t pscan_mode; + uint16_t clock_offset; +} __attribute__ ((packed)) remote_name_req_cp; +#define REMOTE_NAME_REQ_CP_SIZE 10 + +#define OCF_READ_REMOTE_FEATURES 0x001B +typedef struct { + uint16_t handle; +} __attribute__ ((packed)) read_remote_features_cp; +#define READ_REMOTE_FEATURES_CP_SIZE 2 + +#define OCF_READ_REMOTE_VERSION 0x001D +typedef struct { + uint16_t handle; +} __attribute__ ((packed)) read_remote_version_cp; +#define READ_REMOTE_VERSION_CP_SIZE 2 + +/* Link Policy */ +#define OGF_LINK_POLICY 0x02 +#define OCF_ROLE_DISCOVERY 0x0009 +typedef struct { + uint16_t handle; +} __attribute__ ((packed)) role_discovery_cp; +#define ROLE_DISCOVERY_CP_SIZE 2 +typedef struct { + uint8_t status; + uint16_t handle; + uint8_t role; +} __attribute__ ((packed)) role_discovery_rp; +#define ROLE_DISCOVERY_RP_SIZE 4 + +#define OCF_READ_LINK_POLICY 0x000C +typedef struct { + uint16_t handle; +} __attribute__ ((packed)) read_link_policy_cp; +#define READ_LINK_POLICY_CP_SIZE 2 +typedef struct { + uint8_t status; + uint16_t handle; + uint16_t policy; +} __attribute__ ((packed)) read_link_policy_rp; +#define READ_LINK_POLICY_RP_SIZE 5 + +#define OCF_SWITCH_ROLE 0x000B +typedef struct { + bdaddr_t bdaddr; + uint8_t role; +} __attribute__ ((packed)) switch_role_cp; +#define SWITCH_ROLE_CP_SIZE 7 + +#define OCF_WRITE_LINK_POLICY 0x000D +typedef struct { + uint16_t handle; + uint16_t policy; +} __attribute__ ((packed)) write_link_policy_cp; +#define WRITE_LINK_POLICY_CP_SIZE 4 +typedef struct { + uint8_t status; + uint16_t handle; +} __attribute__ ((packed)) write_link_policy_rp; +#define WRITE_LINK_POLICY_RP_SIZE 3 + +/* Status params */ +#define OGF_STATUS_PARAM 0x05 + +/* ---- HCI Events ---- */ +#define EVT_INQUIRY_COMPLETE 0x01 + +#define EVT_INQUIRY_RESULT 0x02 +typedef struct { + bdaddr_t bdaddr; + uint8_t pscan_rep_mode; + uint8_t pscan_period_mode; + uint8_t pscan_mode; + uint8_t dev_class[3]; + uint16_t clock_offset; +} __attribute__ ((packed)) inquiry_info; +#define INQUIRY_INFO_SIZE 14 + +#define EVT_CONN_COMPLETE 0x03 +typedef struct { + uint8_t status; + uint16_t handle; + bdaddr_t bdaddr; + uint8_t link_type; + uint8_t encr_mode; +} __attribute__ ((packed)) evt_conn_complete; +#define EVT_CONN_COMPLETE_SIZE 13 + +#define EVT_CONN_REQUEST 0x04 +typedef struct { + bdaddr_t bdaddr; + uint8_t dev_class[3]; + uint8_t link_type; +} __attribute__ ((packed)) evt_conn_request; +#define EVT_CONN_REQUEST_SIZE 10 + +#define EVT_DISCONN_COMPLETE 0x05 +typedef struct { + uint8_t status; + uint16_t handle; + uint8_t reason; +} __attribute__ ((packed)) evt_disconn_complete; +#define EVT_DISCONN_COMPLETE_SIZE 4 + +#define EVT_AUTH_COMPLETE 0x06 +typedef struct { + uint8_t status; + uint16_t handle; +} __attribute__ ((packed)) evt_auth_complete; +#define EVT_AUTH_COMPLETE_SIZE 3 + +#define EVT_REMOTE_NAME_REQ_COMPLETE 0x07 +typedef struct { + uint8_t status; + bdaddr_t bdaddr; + uint8_t name[248]; +} __attribute__ ((packed)) evt_remote_name_req_complete; +#define EVT_REMOTE_NAME_REQ_COMPLETE_SIZE 255 + +#define EVT_ENCRYPT_CHANGE 0x08 +typedef struct { + uint8_t status; + uint16_t handle; + uint8_t encrypt; +} __attribute__ ((packed)) evt_encrypt_change; +#define EVT_ENCRYPT_CHANGE_SIZE 5 + +#define EVT_QOS_SETUP_COMPLETE 0x0D +typedef struct { + uint8_t service_type; + uint32_t token_rate; + uint32_t peak_bandwidth; + uint32_t latency; + uint32_t delay_variation; +} __attribute__ ((packed)) hci_qos; +typedef struct { + uint8_t status; + uint16_t handle; + hci_qos qos; +} __attribute__ ((packed)) evt_qos_setup_complete; +#define EVT_QOS_SETUP_COMPLETE_SIZE 20 + +#define EVT_CMD_COMPLETE 0x0e +typedef struct { + uint8_t ncmd; + uint16_t opcode; +} __attribute__ ((packed)) evt_cmd_complete; +#define EVT_CMD_COMPLETE_SIZE 3 + +#define EVT_CMD_STATUS 0x0f +typedef struct { + uint8_t status; + uint8_t ncmd; + uint16_t opcode; +} __attribute__ ((packed)) evt_cmd_status; +#define EVT_CMD_STATUS_SIZE 4 + +#define EVT_NUM_COMP_PKTS 0x13 +typedef struct { + uint8_t num_hndl; + /* variable lenght part */ +} __attribute__ ((packed)) evt_num_comp_pkts; +#define EVT_NUM_COMP_PKTS_SIZE 1 + +#define EVT_ROLE_CHANGE 0x12 +typedef struct { + uint8_t status; + bdaddr_t bdaddr; + uint8_t role; +} __attribute__ ((packed)) evt_role_change; +#define EVT_ROLE_CHANGE_SIZE 1 + +#define EVT_PIN_CODE_REQ 0x16 +typedef struct { + bdaddr_t bdaddr; +} __attribute__ ((packed)) evt_pin_code_req; +#define EVT_PIN_CODE_REQ_SIZE 6 + +#define EVT_LINK_KEY_REQ 0x17 +typedef struct { + bdaddr_t bdaddr; +} __attribute__ ((packed)) evt_link_key_req; +#define EVT_LINK_KEY_REQ_SIZE 6 + +#define EVT_LINK_KEY_NOTIFY 0x18 +typedef struct { + bdaddr_t bdaddr; + uint8_t link_key[16]; + uint8_t key_type; +} __attribute__ ((packed)) evt_link_key_notify; +#define EVT_LINK_KEY_NOTIFY_SIZE 23 + +#define EVT_READ_REMOTE_FEATURES_COMPLETE 0x0B +typedef struct { + uint8_t status; + uint16_t handle; + uint8_t features[8]; +} __attribute__ ((packed)) evt_read_remote_features_complete; +#define EVT_READ_REMOTE_FEATURES_COMPLETE_SIZE 11 + +#define EVT_READ_REMOTE_VERSION_COMPLETE 0x0C +typedef struct { + uint8_t status; + uint16_t handle; + uint8_t lmp_ver; + uint16_t manufacturer; + uint16_t lmp_subver; +} __attribute__ ((packed)) evt_read_remote_version_complete; +#define EVT_READ_REMOTE_VERSION_COMPLETE_SIZE 8 + +/* Internal events generated by BlueZ stack */ +#define EVT_STACK_INTERNAL 0xfd +typedef struct { + uint16_t type; + uint8_t data[0]; +} __attribute__ ((packed)) evt_stack_internal; +#define EVT_STACK_INTERNAL_SIZE 2 + +#define EVT_SI_DEVICE 0x01 +typedef struct { + uint16_t event; + uint16_t dev_id; +} __attribute__ ((packed)) evt_si_device; +#define EVT_SI_DEVICE_SIZE 4 + +#define EVT_SI_SECURITY 0x02 +typedef struct { + uint16_t event; + uint16_t proto; + uint16_t subproto; + uint8_t incomming; +} __attribute__ ((packed)) evt_si_security; + +/* -------- HCI Packet structures -------- */ +#define HCI_TYPE_LEN 1 + +typedef struct { + uint16_t opcode; /* OCF & OGF */ + uint8_t plen; +} __attribute__ ((packed)) hci_command_hdr; +#define HCI_COMMAND_HDR_SIZE 3 + +typedef struct { + uint8_t evt; + uint8_t plen; +} __attribute__ ((packed)) hci_event_hdr; +#define HCI_EVENT_HDR_SIZE 2 + +typedef struct { + uint16_t handle; /* Handle & Flags(PB, BC) */ + uint16_t dlen; +} __attribute__ ((packed)) hci_acl_hdr; +#define HCI_ACL_HDR_SIZE 4 + +typedef struct { + uint16_t handle; + uint8_t dlen; +} __attribute__ ((packed)) hci_sco_hdr; +#define HCI_SCO_HDR_SIZE 3 + +/* Command opcode pack/unpack */ +#define cmd_opcode_pack(ogf, ocf) (uint16_t)((ocf & 0x03ff)|(ogf << 10)) +#define cmd_opcode_ogf(op) (op >> 10) +#define cmd_opcode_ocf(op) (op & 0x03ff) + +/* ACL handle and flags pack/unpack */ +#define acl_handle_pack(h, f) (uint16_t)((h & 0x0fff)|(f << 12)) +#define acl_handle(h) (h & 0x0fff) +#define acl_flags(h) (h >> 12) + +#endif /* _NO_HCI_DEFS */ + +/* HCI Socket options */ +#define HCI_DATA_DIR 1 +#define HCI_FILTER 2 +#define HCI_TIME_STAMP 3 + +/* HCI CMSG flags */ +#define HCI_CMSG_DIR 0x0001 +#define HCI_CMSG_TSTAMP 0x0002 + +struct sockaddr_hci { + sa_family_t hci_family; + unsigned short hci_dev; +}; +#define HCI_DEV_NONE 0xffff + +struct hci_filter { + uint32_t type_mask; + uint32_t event_mask[2]; + uint16_t opcode; +}; + +#define HCI_FLT_TYPE_BITS 31 +#define HCI_FLT_EVENT_BITS 63 +#define HCI_FLT_OGF_BITS 63 +#define HCI_FLT_OCF_BITS 127 + +/* Ioctl requests structures */ +struct hci_dev_stats { + uint32_t err_rx; + uint32_t err_tx; + uint32_t cmd_tx; + uint32_t evt_rx; + uint32_t acl_tx; + uint32_t acl_rx; + uint32_t sco_tx; + uint32_t sco_rx; + uint32_t byte_rx; + uint32_t byte_tx; +}; + +struct hci_dev_info { + uint16_t dev_id; + char name[8]; + + bdaddr_t bdaddr; + + uint32_t flags; + uint8_t type; + + uint8_t features[8]; + + uint32_t pkt_type; + uint32_t link_policy; + uint32_t link_mode; + + uint16_t acl_mtu; + uint16_t acl_max; + uint16_t sco_mtu; + uint16_t sco_max; + + struct hci_dev_stats stat; +}; + +struct hci_conn_info { + uint16_t handle; + bdaddr_t bdaddr; + uint8_t type; + uint8_t out; + uint16_t state; + uint32_t link_mode; +}; + +struct hci_dev_req { + uint16_t dev_id; + uint32_t dev_opt; +}; + +struct hci_dev_list_req { + uint16_t dev_num; + struct hci_dev_req dev_req[0]; /* hci_dev_req structures */ +}; + +struct hci_conn_list_req { + uint16_t dev_id; + uint16_t conn_num; + struct hci_conn_info conn_info[0]; +}; + +struct hci_conn_info_req { + bdaddr_t bdaddr; + uint8_t type; + struct hci_conn_info conn_info[0]; +}; + +struct hci_inquiry_req { + uint16_t dev_id; + uint16_t flags; + uint8_t lap[3]; + uint8_t length; + uint8_t num_rsp; +}; +#define IREQ_CACHE_FLUSH 0x0001 + +struct hci_remotename_req { + uint16_t dev_id; + uint16_t flags; + bdaddr_t bdaddr; + uint8_t name[248]; +}; + +#ifdef __cplusplus +} +#endif + +#endif /* __HCI_H */ -- cgit From 2c4532ba9feb08d1e37ca785bde83330d9cb4b71 Mon Sep 17 00:00:00 2001 From: Max Krasnyansky Date: Tue, 12 Mar 2002 18:58:39 +0000 Subject: Missing includes. Cleanup. --- include/hci.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 3f98ab1d..38060fb8 100644 --- a/include/hci.h +++ b/include/hci.h @@ -33,7 +33,7 @@ extern "C" { #endif -#define HCI_MAX_DEV 4 +#define HCI_MAX_DEV 16 #define HCI_MAX_ACL_SIZE 1024 #define HCI_MAX_SCO_SIZE 255 -- cgit From 54e7db35ec328da8e131a70d757904f2bbaa2083 Mon Sep 17 00:00:00 2001 From: Max Krasnyansky Date: Tue, 19 Mar 2002 18:07:03 +0000 Subject: Inquiry activity defines. --- include/hci.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 38060fb8..5fcc8c1e 100644 --- a/include/hci.h +++ b/include/hci.h @@ -206,6 +206,22 @@ typedef struct { /* Host Controller and Baseband */ #define OGF_HOST_CTL 0x03 #define OCF_RESET 0x0003 + +#define OCF_READ_INQ_ACTIVITY 0x001D +typedef struct { + uint8_t status; + uint16_t interval; + uint16_t window; +} __attribute__ ((packed)) read_inq_activity_rp; +#define READ_INQ_ACTIVITY_RP_SIZE 5 + +#define OCF_WRITE_INQ_ACTIVITY 0x001E +typedef struct { + uint16_t interval; + uint16_t window; +} __attribute__ ((packed)) write_inq_activity_cp; +#define WRITE_INQ_ACTIVITY_CP_SIZE 4 + #define OCF_READ_AUTH_ENABLE 0x001F #define OCF_WRITE_AUTH_ENABLE 0x0020 #define AUTH_DISABLED 0x00 -- cgit From e5049f81cd29f935a2465c430f5db8f15765d46d Mon Sep 17 00:00:00 2001 From: Max Krasnyansky Date: Wed, 20 Mar 2002 17:59:04 +0000 Subject: Typo correction. --- include/hci.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 5fcc8c1e..a9b23ffd 100644 --- a/include/hci.h +++ b/include/hci.h @@ -342,7 +342,7 @@ typedef struct { #define OCF_INQUIRY 0x0001 typedef struct { uint8_t lap[3]; - uint8_t lenght; + uint8_t length; uint8_t num_rsp; } __attribute__ ((packed)) inquiry_cp; #define INQUIRY_CP_SIZE 5 @@ -555,7 +555,7 @@ typedef struct { #define EVT_NUM_COMP_PKTS 0x13 typedef struct { uint8_t num_hndl; - /* variable lenght part */ + /* variable length part */ } __attribute__ ((packed)) evt_num_comp_pkts; #define EVT_NUM_COMP_PKTS_SIZE 1 -- cgit From 1247cae735e039a593f42ce9867f8cf8e68effee Mon Sep 17 00:00:00 2001 From: Max Krasnyansky Date: Tue, 26 Mar 2002 17:59:19 +0000 Subject: New ioctls. Minor cleanups. --- include/hci.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index a9b23ffd..ef07bc06 100644 --- a/include/hci.h +++ b/include/hci.h @@ -86,6 +86,8 @@ enum { #define HCISETPTYPE _IOW('H', 224, int) #define HCISETLINKPOL _IOW('H', 225, int) #define HCISETLINKMODE _IOW('H', 226, int) +#define HCISETACLMTU _IOW('H', 227, int) +#define HCISETSCOMTU _IOW('H', 228, int) #define HCIINQUIRY _IOR('H', 240, int) @@ -723,11 +725,11 @@ struct hci_dev_info { uint32_t link_mode; uint16_t acl_mtu; - uint16_t acl_max; + uint16_t acl_pkts; uint16_t sco_mtu; - uint16_t sco_max; + uint16_t sco_pkts; - struct hci_dev_stats stat; + struct hci_dev_stats stat; }; struct hci_conn_info { -- cgit From cf7340b7aa8fc1a5cae9bc55b368ef4b110cebc0 Mon Sep 17 00:00:00 2001 From: Max Krasnyansky Date: Wed, 3 Apr 2002 17:45:50 +0000 Subject: Added status commands --- include/hci.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index ef07bc06..65eabc62 100644 --- a/include/hci.h +++ b/include/hci.h @@ -461,6 +461,37 @@ typedef struct { /* Status params */ #define OGF_STATUS_PARAM 0x05 +#define OCF_READ_FAILED_CONTACT_COUNTER 0x0001 +typedef struct { + uint8_t status; + uint16_t handle; + uint8_t counter; +} __attribute__ ((packed)) read_failed_contact_counter_rp; +#define READ_FAILED_CONTACT_COUNTER_RP_SIZE 4 + +#define OCF_RESET_FAILED_CONTACT_COUNTER 0x0002 +typedef struct { + uint8_t status; + uint16_t handle; +} __attribute__ ((packed)) reset_failed_contact_counter_rp; +#define OCF_RESET_FAILED_CONTACT_COUNTER_RP_SIZE 4 + +#define OCF_GET_LINK_QUALITY 0x0003 +typedef struct { + uint8_t status; + uint16_t handle; + uint8_t link_quality; +} __attribute__ ((packed)) get_link_quality_rp; +#define GET_LINK_QUALITY_RP_SIZE 4 + +#define OCF_READ_RSSI 0x0005 +typedef struct { + uint8_t status; + uint16_t handle; + uint8_t rssi; +} __attribute__ ((packed)) read_rssi_rp; +#define READ_RSSI_RP_SIZE 4 + /* ---- HCI Events ---- */ #define EVT_INQUIRY_COMPLETE 0x01 -- cgit From 8dab9b0bcab616bde55a3a137bd6fb8818ced4a5 Mon Sep 17 00:00:00 2001 From: Max Krasnyansky Date: Thu, 11 Apr 2002 16:56:10 +0000 Subject: Added LMP features to sting translation function and table. --- include/hci.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 65eabc62..4610ac00 100644 --- a/include/hci.h +++ b/include/hci.h @@ -139,7 +139,7 @@ enum { #define LMP_TACCURACY 0x10 #define LMP_RSWITCH 0x20 #define LMP_HOLD 0x40 -#define LMP_SNIF 0x80 +#define LMP_SNIFF 0x80 #define LMP_PARK 0x01 #define LMP_RSSI 0x02 @@ -153,6 +153,7 @@ enum { #define LMP_CVSD 0x01 #define LMP_PSCHEME 0x02 #define LMP_PCONTROL 0x04 +#define LMP_TRSP_SCO 0x08 /* Link policies */ #define HCI_LP_RSWITCH 0x0001 -- cgit From 468f117f4ce1090cec1cc1928676c449434eb9a3 Mon Sep 17 00:00:00 2001 From: Max Krasnyansky Date: Sat, 18 May 2002 00:30:02 +0000 Subject: SET_CONN_PTYPE defin fix. --- include/hci.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 4610ac00..d6946976 100644 --- a/include/hci.h +++ b/include/hci.h @@ -378,7 +378,7 @@ typedef struct { uint16_t handle; uint16_t pkt_type; } __attribute__ ((packed)) set_conn_ptype_cp; -#define SET_CONN_PKT_TYPE_CP_SIZE 4 +#define SET_CONN_PTYPE_CP_SIZE 4 #define OCF_AUTH_REQUESTED 0x0011 typedef struct { -- cgit From 2377f938f56bc623ac6e0ad2e68862a0566dd7de Mon Sep 17 00:00:00 2001 From: Max Krasnyansky Date: Tue, 25 Jun 2002 04:07:01 +0000 Subject: Additional HCI defines. --- include/hci.h | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index d6946976..8c898d42 100644 --- a/include/hci.h +++ b/include/hci.h @@ -210,6 +210,34 @@ typedef struct { #define OGF_HOST_CTL 0x03 #define OCF_RESET 0x0003 +#define OCF_READ_PAGE_TIMEOUT 0x0017 +typedef struct { + uint8_t status; + uint16_t timeout; +} __attribute__ ((packed)) read_page_timeout_rp; +#define READ_PAGE_TIMEOUT_RP_SIZE 3 + +#define OCF_WRITE_PAGE_TIMEOUT 0x0018 +typedef struct { + uint16_t timeout; +} __attribute__ ((packed)) write_page_timeout_cp; +#define WRITE_PAGE_TIMEOUT_CP_SIZE 2 + +#define OCF_READ_PAGE_ACTIVITY 0x001B +typedef struct { + uint8_t status; + uint16_t interval; + uint16_t window; +} __attribute__ ((packed)) read_page_activity_rp; +#define READ_PAGE_ACTIVITY_RP_SIZE 5 + +#define OCF_WRITE_PAGE_ACTIVITY 0x001C +typedef struct { + uint16_t interval; + uint16_t window; +} __attribute__ ((packed)) write_page_activity_cp; +#define WRITE_PAGE_ACTIVITY_CP_SIZE 4 + #define OCF_READ_INQ_ACTIVITY 0x001D typedef struct { uint8_t status; -- cgit From 23ee7253eaee8524cdad88c0a796a630ceebac66 Mon Sep 17 00:00:00 2001 From: Max Krasnyansky Date: Thu, 27 Jun 2002 17:30:13 +0000 Subject: Fix broadcast flags. --- include/hci.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 8c898d42..d36a43eb 100644 --- a/include/hci.h +++ b/include/hci.h @@ -122,10 +122,10 @@ enum { #define ACL_PTYPE_MASK (~SCO_PTYPE_MASK) /* ACL flags */ -#define ACL_CONT 0x0001 -#define ACL_START 0x0002 -#define ACL_ACTIVE_BCAST 0x0010 -#define ACL_PICO_BCAST 0x0020 +#define ACL_CONT 0x01 +#define ACL_START 0x02 +#define ACL_ACTIVE_BCAST 0x04 +#define ACL_PICO_BCAST 0x08 /* Baseband links */ #define SCO_LINK 0x00 -- cgit From 3bd9f65df44db713ad911a729d7a934e2d328661 Mon Sep 17 00:00:00 2001 From: Max Krasnyansky Date: Wed, 3 Jul 2002 22:01:23 +0000 Subject: rssi is signed int --- include/hci.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index d36a43eb..90d148f0 100644 --- a/include/hci.h +++ b/include/hci.h @@ -517,7 +517,7 @@ typedef struct { typedef struct { uint8_t status; uint16_t handle; - uint8_t rssi; + int8_t rssi; } __attribute__ ((packed)) read_rssi_rp; #define READ_RSSI_RP_SIZE 4 -- cgit From 803bf105508009f7efc87276a539dda244527690 Mon Sep 17 00:00:00 2001 From: Stephen Crane Date: Wed, 21 Aug 2002 16:38:15 +0000 Subject: implement hci_{read, write}_current_iac_lap() --- include/hci.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 90d148f0..e12352b4 100644 --- a/include/hci.h +++ b/include/hci.h @@ -329,6 +329,22 @@ typedef struct { } __attribute__ ((packed)) host_buffer_size_cp; #define HOST_BUFFER_SIZE_CP_SIZE 7 +#define MAX_IAC_LAP 0x40 +#define OCF_READ_CURRENT_IAC_LAP 0x0039 +typedef struct { + uint8_t status; + uint8_t num_current_iac; + uint8_t lap[3][MAX_IAC_LAP]; +} __attribute__ ((packed)) read_current_iac_lap_rp; +#define READ_CURRENT_IAC_LAP_RP_SIZE 2+3*MAX_IAC_LAP + +#define OCF_WRITE_CURRENT_IAC_LAP 0x003A +typedef struct { + uint8_t num_current_iac; + uint8_t lap[3][MAX_IAC_LAP]; +} __attribute__ ((packed)) write_current_iac_lap_cp; +#define WRITE_CURRENT_IAC_LAP_CP_SIZE 1+3*MAX_IAC_LAP + /* Link Control */ #define OGF_LINK_CTL 0x01 #define OCF_CREATE_CONN 0x0005 -- cgit From 9a51483b2a1d80512904b1df81a8222afdb3a76a Mon Sep 17 00:00:00 2001 From: Max Krasnyansky Date: Sun, 15 Sep 2002 16:30:56 +0000 Subject: Role change event size is 8 --- include/hci.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index e12352b4..ba01bec0 100644 --- a/include/hci.h +++ b/include/hci.h @@ -643,7 +643,7 @@ typedef struct { bdaddr_t bdaddr; uint8_t role; } __attribute__ ((packed)) evt_role_change; -#define EVT_ROLE_CHANGE_SIZE 1 +#define EVT_ROLE_CHANGE_SIZE 8 #define EVT_PIN_CODE_REQ 0x16 typedef struct { -- cgit From 79cd53450eeb6555077f7ede0b5e02a23d7bebe8 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sun, 22 Sep 2002 23:59:17 +0000 Subject: Add HCI_PCI to the device types --- include/hci.h | 1 + 1 file changed, 1 insertion(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index ba01bec0..e522ee85 100644 --- a/include/hci.h +++ b/include/hci.h @@ -52,6 +52,7 @@ extern "C" { #define HCI_PCCARD 2 #define HCI_UART 3 #define HCI_RS232 4 +#define HCI_PCI 5 /* HCI device flags */ enum { -- cgit From b7597027bc00feec6a7c90b5bef45f348417781f Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Fri, 4 Oct 2002 13:34:53 +0000 Subject: Add hci_suspend_dev() and hci_resume_dev() skeleton --- include/hci.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index e522ee85..bd4f692c 100644 --- a/include/hci.h +++ b/include/hci.h @@ -45,6 +45,8 @@ extern "C" { #define HCI_DEV_UNREG 2 #define HCI_DEV_UP 3 #define HCI_DEV_DOWN 4 +#define HCI_DEV_SUSPEND 5 +#define HCI_DEV_RESUME 6 /* HCI device types */ #define HCI_VHCI 0 -- cgit From 5c637d2cdb568e8d3c0cf08a57fca8131ddbe036 Mon Sep 17 00:00:00 2001 From: Max Krasnyansky Date: Mon, 7 Oct 2002 06:01:46 +0000 Subject: Added link supervision timeout cmd and events. --- include/hci.h | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index bd4f692c..9e2848f6 100644 --- a/include/hci.h +++ b/include/hci.h @@ -256,6 +256,21 @@ typedef struct { } __attribute__ ((packed)) write_inq_activity_cp; #define WRITE_INQ_ACTIVITY_CP_SIZE 4 +#define OCF_READ_LINK_SUPERVISION_TIMEOUT 0x0036 +typedef struct { + uint8_t status; + uint16_t handle; + uint16_t link_sup_to; +} __attribute__ ((packed)) read_link_supervision_timeout_rp; +#define READ_LINK_SUPERVISION_TIMEOUT_RP_SIZE 5 + +#define OCF_WRITE_LINK_SUPERVISION_TIMEOUT 0x0037 +typedef struct { + uint16_t handle; + uint16_t link_sup_to; +} __attribute__ ((packed)) write_link_supervision_timeout_cp; +#define WRITE_LINK_SUPERVISION_TIMEOUT_CP_SIZE 4 + #define OCF_READ_AUTH_ENABLE 0x001F #define OCF_WRITE_AUTH_ENABLE 0x0020 #define AUTH_DISABLED 0x00 @@ -668,6 +683,14 @@ typedef struct { } __attribute__ ((packed)) evt_link_key_notify; #define EVT_LINK_KEY_NOTIFY_SIZE 23 +#define EVT_CONN_PTYPE_CHANGED 0x1D +typedef struct { + uint8_t status; + uint16_t handle; + uint16_t ptype; +} __attribute__ ((packed)) evt_conn_ptype_changed; +#define EVT_CONN_PTYPE_CHANGED_SIZE 5 + #define EVT_READ_REMOTE_FEATURES_COMPLETE 0x0B typedef struct { uint8_t status; -- cgit From 38b2a7b2c0d00282a52c339145ae55b4a787d6db Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Fri, 22 Nov 2002 20:04:43 +0000 Subject: Some more missing HCI commands and correction of the QOS event --- include/hci.h | 55 +++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 47 insertions(+), 8 deletions(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 9e2848f6..8000e47b 100644 --- a/include/hci.h +++ b/include/hci.h @@ -363,6 +363,13 @@ typedef struct { } __attribute__ ((packed)) write_current_iac_lap_cp; #define WRITE_CURRENT_IAC_LAP_CP_SIZE 1+3*MAX_IAC_LAP +#define OCF_WRITE_SUPERVISION_TIMEOUT 0x0037 +typedef struct { + uint16_t handle; + uint16_t timeout; /* in 0.625 ms units */ +} __attribute__ ((packed)) write_supervision_timeout_cp; +#define WRITE_SUPERVISION_TIMEOUT_CP_SIZE 4 + /* Link Control */ #define OGF_LINK_CTL 0x01 #define OCF_CREATE_CONN 0x0005 @@ -418,6 +425,20 @@ typedef struct { } __attribute__ ((packed)) status_bdaddr_rp; #define STATUS_BDADDR_RP_SIZE 7 +#define OCF_INQUIRY_CANCEL 0x0002 + +#define OCF_PERIODIC_INQUIRY 0x0003 +typedef struct { + uint16_t max_period; /* 1.28s units */ + uint16_t min_period; /* 1.28s units */ + uint8_t lap[3]; + uint8_t length; /* 1.28s units */ + uint8_t num_rsp; +} __attribute__ ((packed)) periodic_inquiry_cp; +#define PERIODIC_INQUIRY_CP_SIZE 9 + +#define OCF_EXIT_PERIODIC_INQUIRY 0x0004 + #define OCF_LINK_KEY_REPLY 0x000B #define OCF_LINK_KEY_NEG_REPLY 0x000C typedef struct { @@ -478,6 +499,24 @@ typedef struct { /* Link Policy */ #define OGF_LINK_POLICY 0x02 + +typedef struct { + uint8_t service_type; /* 1 = best effort */ + uint32_t token_rate; /* Byte per seconds */ + uint32_t peak_bandwidth; /* Byte per seconds */ + uint32_t latency; /* Microseconds */ + uint32_t delay_variation; /* Microseconds */ +} __attribute__ ((packed)) hci_qos; +#define HCI_QOS_CP_SIZE 17 + +#define OCF_QOS_SETUP 0x0007 +typedef struct { + uint16_t handle; + uint8_t flags; /* Reserved */ + hci_qos qos; +} __attribute__ ((packed)) qos_setup_cp; +#define QOS_SETUP_CP_SIZE (3 + HCI_QOS_CP_SIZE) + #define OCF_ROLE_DISCOVERY 0x0009 typedef struct { uint16_t handle; @@ -619,19 +658,19 @@ typedef struct { #define EVT_ENCRYPT_CHANGE_SIZE 5 #define EVT_QOS_SETUP_COMPLETE 0x0D -typedef struct { - uint8_t service_type; - uint32_t token_rate; - uint32_t peak_bandwidth; - uint32_t latency; - uint32_t delay_variation; -} __attribute__ ((packed)) hci_qos; typedef struct { uint8_t status; uint16_t handle; + uint8_t flags; /* Reserved */ hci_qos qos; } __attribute__ ((packed)) evt_qos_setup_complete; -#define EVT_QOS_SETUP_COMPLETE_SIZE 20 +#define EVT_QOS_SETUP_COMPLETE_SIZE (4 + HCI_QOS_CP_SIZE) + +#define EVT_QOS_VIOLATION 0x1E +typedef struct { + uint16_t handle; +} __attribute__ ((packed)) evt_qos_violation; +#define EVT_QOS_VIOLATION_SIZE 2 #define EVT_CMD_COMPLETE 0x0e typedef struct { -- cgit From 4e89f72ef1e8a70c40e5b587589977ee9f665d9b Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Fri, 22 Nov 2002 20:11:46 +0000 Subject: Remove OCF_WRITE_SUPERVISION_TIMEOUT --- include/hci.h | 7 ------- 1 file changed, 7 deletions(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 8000e47b..7868366c 100644 --- a/include/hci.h +++ b/include/hci.h @@ -363,13 +363,6 @@ typedef struct { } __attribute__ ((packed)) write_current_iac_lap_cp; #define WRITE_CURRENT_IAC_LAP_CP_SIZE 1+3*MAX_IAC_LAP -#define OCF_WRITE_SUPERVISION_TIMEOUT 0x0037 -typedef struct { - uint16_t handle; - uint16_t timeout; /* in 0.625 ms units */ -} __attribute__ ((packed)) write_supervision_timeout_cp; -#define WRITE_SUPERVISION_TIMEOUT_CP_SIZE 4 - /* Link Control */ #define OGF_LINK_CTL 0x01 #define OCF_CREATE_CONN 0x0005 -- cgit From d6cbeb4c61f5dc0c0d04dd022139b44f81964b18 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sun, 15 Dec 2002 13:18:53 +0000 Subject: Support for voice setting --- include/hci.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 7868366c..a00b7218 100644 --- a/include/hci.h +++ b/include/hci.h @@ -338,6 +338,19 @@ typedef struct { } __attribute__ ((packed)) write_class_of_dev_cp; #define WRITE_CLASS_OF_DEV_CP_SIZE 3 +#define OCF_READ_VOICE_SETTING 0x0025 +typedef struct { + uint8_t status; + uint16_t voice_setting; +} __attribute__ ((packed)) read_voice_setting_rp; +#define READ_VOICE_SETTING_RP_SIZE 3 + +#define OCF_WRITE_VOICE_SETTING 0x0026 +typedef struct { + uint16_t voice_setting; +} __attribute__ ((packed)) write_voice_setting_cp; +#define WRITE_VOICE_SETTING_CP_SIZE 2 + #define OCF_HOST_BUFFER_SIZE 0x0033 typedef struct { uint16_t acl_mtu; -- cgit From b76e31a4c8d609d5334fa8958c53f09b0014aeac Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sat, 21 Dec 2002 19:19:17 +0000 Subject: Add the vendor and testing defines --- include/hci.h | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index a00b7218..8093c35a 100644 --- a/include/hci.h +++ b/include/hci.h @@ -504,7 +504,7 @@ typedef struct { #define READ_REMOTE_VERSION_CP_SIZE 2 /* Link Policy */ -#define OGF_LINK_POLICY 0x02 +#define OGF_LINK_POLICY 0x02 typedef struct { uint8_t service_type; /* 1 = best effort */ @@ -600,6 +600,12 @@ typedef struct { } __attribute__ ((packed)) read_rssi_rp; #define READ_RSSI_RP_SIZE 4 +/* Testing commands */ +#define OGF_TESTING_CMD 0x3e + +/* Vendor specific commands */ +#define OGF_VENDOR_CMD 0x3f + /* ---- HCI Events ---- */ #define EVT_INQUIRY_COMPLETE 0x01 @@ -777,6 +783,10 @@ typedef struct { uint8_t incomming; } __attribute__ ((packed)) evt_si_security; +#define EVT_TESTING 0xfe + +#define EVT_VENDOR 0xff + /* -------- HCI Packet structures -------- */ #define HCI_TYPE_LEN 1 -- cgit From be47bbe6b4e691321240443f2915c5fba4a7d748 Mon Sep 17 00:00:00 2001 From: Stephen Crane Date: Mon, 3 Feb 2003 17:26:56 +0000 Subject: hci error codes --- include/hci.h | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 8093c35a..3e736558 100644 --- a/include/hci.h +++ b/include/hci.h @@ -124,6 +124,49 @@ enum { #define SCO_PTYPE_MASK (HCI_HV1 | HCI_HV2 | HCI_HV3) #define ACL_PTYPE_MASK (~SCO_PTYPE_MASK) +/* HCI Error codes */ +#define HCI_UNKNOWN_COMMAND 0x01 +#define HCI_NO_CONNECTION 0x02 +#define HCI_HARDWARE_FAILURE 0x03 +#define HCI_PAGE_TIMEOUT 0x04 +#define HCI_AUTHENTICATION_FAILURE 0x05 +#define HCI_KEY_MISSING 0x06 +#define HCI_MEMORY_FULL 0x07 +#define HCI_CONNECTION_TIMEOUT 0x08 +#define HCI_MAX_NUMBER_OF_CONNECTIONS 0x09 +#define HCI_MAX_NUMBER_OF_SCO_CONNECTIONS 0x0a +#define HCI_ACL_CONNECTION_EXISTS 0x0b +#define HCI_COMMAND_DISALLOWED 0x0c +#define HCI_REJECTED_LIMITED_RESOURCES 0x0d +#define HCI_REJECTED_SECURITY 0x0e +#define HCI_REJECTED_PERSONAL 0x0f +#define HCI_HOST_TIMEOUT 0x10 +#define HCI_UNSUPPORTED_FEATURE 0x11 +#define HCI_INVALID_PARAMETERS 0x12 +#define HCI_OE_USER_ENDED_CONNECTION 0x13 +#define HCI_OE_LOW_RESOURCES 0x14 +#define HCI_OE_POWER_OFF 0x15 +#define HCI_CONNECTION_TERMINATED 0x16 +#define HCI_REPEATED_ATTEMPTS 0x17 +#define HCI_PAIRING_NOT_ALLOWED 0x18 +#define HCI_UNKNOWN_LMP_PDU 0x19 +#define HCI_UNSUPPORTED_REMOTE_FEATURE 0x1a +#define HCI_SCO_OFFSET_REJECTED 0x1b +#define HCI_SCO_INTERVAL_REJECTED 0x1c +#define HCI_AIR_MODE_REJECTED 0x1d +#define HCI_INVALID_LMP_PARAMETERS 0x1e +#define HCI_UNSPECIFIED_ERROR 0x1f +#define HCI_UNSUPPORTED_LMP_PARAMETER_VALUE 0x20 +#define HCI_ROLE_CHANGE_NOT_ALLOWED 0x21 +#define HCI_LMP_RESPONSE_TIMEOUT 0x22 +#define HCI_LMP_ERROR_TRANSACTION_COLLISION 0x23 +#define HCI_LMP_PDU_NOT_ALLOWED 0x24 +#define HCI_ENCRYPTION_MODE_NOT_ACCEPTED 0x25 +#define HCI_UNIT_LINK_KEY_USED 0x26 +#define HCI_QOS_NOT_SUPPORTED 0x27 +#define HCI_INSTANT_PASSED 0x28 +#define HCI_PAIRING_NOT_SUPPORTED 0x29 + /* ACL flags */ #define ACL_CONT 0x01 #define ACL_START 0x02 -- cgit From bff9ecffc1771df893e0cccc59fe708cf9ba43bb Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Tue, 4 Feb 2003 00:30:39 +0000 Subject: Whitespace cleanup --- include/hci.h | 74 +++++++++++++++++++++++++++++------------------------------ 1 file changed, 37 insertions(+), 37 deletions(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 3e736558..8168a492 100644 --- a/include/hci.h +++ b/include/hci.h @@ -125,47 +125,47 @@ enum { #define ACL_PTYPE_MASK (~SCO_PTYPE_MASK) /* HCI Error codes */ -#define HCI_UNKNOWN_COMMAND 0x01 -#define HCI_NO_CONNECTION 0x02 -#define HCI_HARDWARE_FAILURE 0x03 -#define HCI_PAGE_TIMEOUT 0x04 -#define HCI_AUTHENTICATION_FAILURE 0x05 -#define HCI_KEY_MISSING 0x06 -#define HCI_MEMORY_FULL 0x07 -#define HCI_CONNECTION_TIMEOUT 0x08 -#define HCI_MAX_NUMBER_OF_CONNECTIONS 0x09 +#define HCI_UNKNOWN_COMMAND 0x01 +#define HCI_NO_CONNECTION 0x02 +#define HCI_HARDWARE_FAILURE 0x03 +#define HCI_PAGE_TIMEOUT 0x04 +#define HCI_AUTHENTICATION_FAILURE 0x05 +#define HCI_KEY_MISSING 0x06 +#define HCI_MEMORY_FULL 0x07 +#define HCI_CONNECTION_TIMEOUT 0x08 +#define HCI_MAX_NUMBER_OF_CONNECTIONS 0x09 #define HCI_MAX_NUMBER_OF_SCO_CONNECTIONS 0x0a -#define HCI_ACL_CONNECTION_EXISTS 0x0b -#define HCI_COMMAND_DISALLOWED 0x0c -#define HCI_REJECTED_LIMITED_RESOURCES 0x0d -#define HCI_REJECTED_SECURITY 0x0e -#define HCI_REJECTED_PERSONAL 0x0f -#define HCI_HOST_TIMEOUT 0x10 -#define HCI_UNSUPPORTED_FEATURE 0x11 -#define HCI_INVALID_PARAMETERS 0x12 -#define HCI_OE_USER_ENDED_CONNECTION 0x13 -#define HCI_OE_LOW_RESOURCES 0x14 -#define HCI_OE_POWER_OFF 0x15 -#define HCI_CONNECTION_TERMINATED 0x16 -#define HCI_REPEATED_ATTEMPTS 0x17 -#define HCI_PAIRING_NOT_ALLOWED 0x18 -#define HCI_UNKNOWN_LMP_PDU 0x19 -#define HCI_UNSUPPORTED_REMOTE_FEATURE 0x1a -#define HCI_SCO_OFFSET_REJECTED 0x1b -#define HCI_SCO_INTERVAL_REJECTED 0x1c -#define HCI_AIR_MODE_REJECTED 0x1d -#define HCI_INVALID_LMP_PARAMETERS 0x1e -#define HCI_UNSPECIFIED_ERROR 0x1f +#define HCI_ACL_CONNECTION_EXISTS 0x0b +#define HCI_COMMAND_DISALLOWED 0x0c +#define HCI_REJECTED_LIMITED_RESOURCES 0x0d +#define HCI_REJECTED_SECURITY 0x0e +#define HCI_REJECTED_PERSONAL 0x0f +#define HCI_HOST_TIMEOUT 0x10 +#define HCI_UNSUPPORTED_FEATURE 0x11 +#define HCI_INVALID_PARAMETERS 0x12 +#define HCI_OE_USER_ENDED_CONNECTION 0x13 +#define HCI_OE_LOW_RESOURCES 0x14 +#define HCI_OE_POWER_OFF 0x15 +#define HCI_CONNECTION_TERMINATED 0x16 +#define HCI_REPEATED_ATTEMPTS 0x17 +#define HCI_PAIRING_NOT_ALLOWED 0x18 +#define HCI_UNKNOWN_LMP_PDU 0x19 +#define HCI_UNSUPPORTED_REMOTE_FEATURE 0x1a +#define HCI_SCO_OFFSET_REJECTED 0x1b +#define HCI_SCO_INTERVAL_REJECTED 0x1c +#define HCI_AIR_MODE_REJECTED 0x1d +#define HCI_INVALID_LMP_PARAMETERS 0x1e +#define HCI_UNSPECIFIED_ERROR 0x1f #define HCI_UNSUPPORTED_LMP_PARAMETER_VALUE 0x20 -#define HCI_ROLE_CHANGE_NOT_ALLOWED 0x21 -#define HCI_LMP_RESPONSE_TIMEOUT 0x22 +#define HCI_ROLE_CHANGE_NOT_ALLOWED 0x21 +#define HCI_LMP_RESPONSE_TIMEOUT 0x22 #define HCI_LMP_ERROR_TRANSACTION_COLLISION 0x23 -#define HCI_LMP_PDU_NOT_ALLOWED 0x24 +#define HCI_LMP_PDU_NOT_ALLOWED 0x24 #define HCI_ENCRYPTION_MODE_NOT_ACCEPTED 0x25 -#define HCI_UNIT_LINK_KEY_USED 0x26 -#define HCI_QOS_NOT_SUPPORTED 0x27 -#define HCI_INSTANT_PASSED 0x28 -#define HCI_PAIRING_NOT_SUPPORTED 0x29 +#define HCI_UNIT_LINK_KEY_USED 0x26 +#define HCI_QOS_NOT_SUPPORTED 0x27 +#define HCI_INSTANT_PASSED 0x28 +#define HCI_PAIRING_NOT_SUPPORTED 0x29 /* ACL flags */ #define ACL_CONT 0x01 -- cgit From 109bfa547ab9e24672472371e2183dcec24d0058 Mon Sep 17 00:00:00 2001 From: Stephen Crane Date: Tue, 11 Feb 2003 10:22:23 +0000 Subject: add const to fn sigs; fns to auth and enc links --- include/hci.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 8168a492..212db12b 100644 --- a/include/hci.h +++ b/include/hci.h @@ -823,7 +823,7 @@ typedef struct { uint16_t event; uint16_t proto; uint16_t subproto; - uint8_t incomming; + uint8_t incoming; } __attribute__ ((packed)) evt_si_security; #define EVT_TESTING 0xfe -- cgit From 1c9576607a611e033e0bac0f56d91146c120a16d Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sat, 22 Mar 2003 08:00:36 +0000 Subject: Support for reading the clock offset --- include/hci.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 212db12b..904bc5c8 100644 --- a/include/hci.h +++ b/include/hci.h @@ -546,6 +546,12 @@ typedef struct { } __attribute__ ((packed)) read_remote_version_cp; #define READ_REMOTE_VERSION_CP_SIZE 2 +#define OCF_READ_CLOCK_OFFSET 0x001F +typedef struct { + uint16_t handle; +} __attribute__ ((packed)) read_clock_offset_cp; +#define READ_CLOCK_OFFSET_CP_SIZE 2 + /* Link Policy */ #define OGF_LINK_POLICY 0x02 @@ -777,6 +783,14 @@ typedef struct { } __attribute__ ((packed)) evt_link_key_notify; #define EVT_LINK_KEY_NOTIFY_SIZE 23 +#define EVT_READ_CLOCK_OFFSET_COMPLETE 0x1C +typedef struct { + uint8_t status; + uint16_t handle; + uint16_t clock_offset; +} __attribute__ ((packed)) evt_read_clock_offset_complete; +#define EVT_READ_CLOCK_OFFSET_COMPLETE_SIZE 5 + #define EVT_CONN_PTYPE_CHANGED 0x1D typedef struct { uint8_t status; -- cgit From be609d042ad549ec27de081cd81a7001fb307581 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Wed, 23 Apr 2003 01:13:10 +0000 Subject: Add HCI defines for park, sniff and hold mode --- include/hci.h | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 904bc5c8..531d4e1d 100644 --- a/include/hci.h +++ b/include/hci.h @@ -421,6 +421,7 @@ typedef struct { /* Link Control */ #define OGF_LINK_CTL 0x01 + #define OCF_CREATE_CONN 0x0005 typedef struct { bdaddr_t bdaddr; @@ -555,6 +556,36 @@ typedef struct { /* Link Policy */ #define OGF_LINK_POLICY 0x02 +#define OCF_SNIFF_MODE 0x0003 +typedef struct { + uint16_t handle; + uint16_t interval_max; + uint16_t interval_min; + uint16_t attempt_window; + uint16_t timeout; +} __attribute__ ((packed)) sniff_mode_cp; +#define SNIFF_MODE_CP_SIZE 10 + +#define OCF_EXIT_SNIFF_MODE 0x0004 +typedef struct { + uint16_t handle; +} __attribute__ ((packed)) exit_sniff_mode_cp; +#define EXIT_SNIFF_MODE_CP_SIZE 2 + +#define OCF_PARK_MODE 0x0005 +typedef struct { + uint16_t handle; + uint16_t beacon_max; + uint16_t beacon_min; +} __attribute__ ((packed)) park_mode_cp; +#define PARK_MODE_CP_SIZE 6 + +#define OCF_EXIT_PARK_MODE 0x0006 +typedef struct { + uint16_t handle; +} __attribute__ ((packed)) exit_park_mode_cp; +#define EXIT_PARK_MODE_CP_SIZE 2 + typedef struct { uint8_t service_type; /* 1 = best effort */ uint32_t token_rate; /* Byte per seconds */ @@ -727,6 +758,15 @@ typedef struct { } __attribute__ ((packed)) evt_qos_setup_complete; #define EVT_QOS_SETUP_COMPLETE_SIZE (4 + HCI_QOS_CP_SIZE) +#define EVT_MODE_CHANGE 0x14 +typedef struct { + uint8_t status; + uint16_t handle; + uint8_t mode; + uint16_t interval; +} __attribute__ ((packed)) evt_mode_change; +#define EVT_MODE_CHANGE_SIZE 6 + #define EVT_QOS_VIOLATION 0x1E typedef struct { uint16_t handle; -- cgit From 742d032d41631219ddbd39f39b7c70419064acc1 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Wed, 28 May 2003 23:59:55 +0000 Subject: Add definition of LM_RELIABLE flag --- include/hci.h | 1 + 1 file changed, 1 insertion(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 531d4e1d..e96eee9e 100644 --- a/include/hci.h +++ b/include/hci.h @@ -213,6 +213,7 @@ enum { #define HCI_LM_AUTH 0x0002 #define HCI_LM_ENCRYPT 0x0004 #define HCI_LM_TRUSTED 0x0008 +#define HCI_LM_RELIABLE 0x0010 /* ----- HCI Commands ----- */ /* OGF & OCF values */ -- cgit From 95989cae022b8bd39e3e45e5bc92eaf8c6b5d0ab Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Thu, 26 Jun 2003 11:19:19 +0000 Subject: Add HCI defines for transmit power level --- include/hci.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index e96eee9e..746bb66c 100644 --- a/include/hci.h +++ b/include/hci.h @@ -395,6 +395,19 @@ typedef struct { } __attribute__ ((packed)) write_voice_setting_cp; #define WRITE_VOICE_SETTING_CP_SIZE 2 +#define OCF_READ_TRANSMIT_POWER_LEVEL 0x002D +typedef struct { + uint16_t handle; + uint8_t type; +} __attribute__ ((packed)) read_transmit_power_level_cp; +#define READ_TRANSMIT_POWER_LEVEL_CP_SIZE 3 +typedef struct { + uint8_t status; + uint16_t handle; + int8_t level; +} __attribute__ ((packed)) read_transmit_power_level_rp; +#define READ_TRANSMIT_POWER_LEVEL_RP_SIZE 4 + #define OCF_HOST_BUFFER_SIZE 0x0033 typedef struct { uint16_t acl_mtu; -- cgit From 78410fbc646a08b98487096e93e7bde4189314ae Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Thu, 26 Jun 2003 13:09:02 +0000 Subject: Add functions for park mode --- include/hci.h | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 746bb66c..4e881275 100644 --- a/include/hci.h +++ b/include/hci.h @@ -568,14 +568,22 @@ typedef struct { #define READ_CLOCK_OFFSET_CP_SIZE 2 /* Link Policy */ -#define OGF_LINK_POLICY 0x02 +#define OGF_LINK_POLICY 0x02 + +#define OCF_HOLD_MODE 0x0001 +typedef struct { + uint16_t handle; + uint16_t max_interval; + uint16_t min_interval; +} __attribute__ ((packed)) hold_mode_cp; +#define HOLD_MODE_CP_SIZE 6 #define OCF_SNIFF_MODE 0x0003 typedef struct { uint16_t handle; - uint16_t interval_max; - uint16_t interval_min; - uint16_t attempt_window; + uint16_t max_interval; + uint16_t min_interval; + uint16_t attempt; uint16_t timeout; } __attribute__ ((packed)) sniff_mode_cp; #define SNIFF_MODE_CP_SIZE 10 @@ -589,8 +597,8 @@ typedef struct { #define OCF_PARK_MODE 0x0005 typedef struct { uint16_t handle; - uint16_t beacon_max; - uint16_t beacon_min; + uint16_t max_interval; + uint16_t min_interval; } __attribute__ ((packed)) park_mode_cp; #define PARK_MODE_CP_SIZE 6 -- cgit From 30bc21fa83734b36204d85ec00481ee836ef13d5 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Wed, 2 Jul 2003 23:49:47 +0000 Subject: Sort HCI commands --- include/hci.h | 630 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 316 insertions(+), 314 deletions(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 4e881275..99f01f7f 100644 --- a/include/hci.h +++ b/include/hci.h @@ -216,361 +216,147 @@ enum { #define HCI_LM_RELIABLE 0x0010 /* ----- HCI Commands ----- */ -/* OGF & OCF values */ -/* Informational Parameters */ -#define OGF_INFO_PARAM 0x04 - -#define OCF_READ_LOCAL_VERSION 0x0001 -typedef struct { - uint8_t status; - uint8_t hci_ver; - uint16_t hci_rev; - uint8_t lmp_ver; - uint16_t manufacturer; - uint16_t lmp_subver; -} __attribute__ ((packed)) read_local_version_rp; -#define READ_LOCAL_VERSION_RP_SIZE 9 +/* Link Control */ +#define OGF_LINK_CTL 0x01 -#define OCF_READ_LOCAL_FEATURES 0x0003 +#define OCF_INQUIRY 0x0001 typedef struct { - uint8_t status; - uint8_t features[8]; -} __attribute__ ((packed)) read_local_features_rp; + uint8_t lap[3]; + uint8_t length; /* 1.28s units */ + uint8_t num_rsp; +} __attribute__ ((packed)) inquiry_cp; +#define INQUIRY_CP_SIZE 5 -#define OCF_READ_BUFFER_SIZE 0x0005 typedef struct { uint8_t status; - uint16_t acl_mtu; - uint8_t sco_mtu; - uint16_t acl_max_pkt; - uint16_t sco_max_pkt; -} __attribute__ ((packed)) read_buffer_size_rp; - -#define OCF_READ_BD_ADDR 0x0009 -typedef struct { - uint8_t status; bdaddr_t bdaddr; -} __attribute__ ((packed)) read_bd_addr_rp; - -/* Host Controller and Baseband */ -#define OGF_HOST_CTL 0x03 -#define OCF_RESET 0x0003 - -#define OCF_READ_PAGE_TIMEOUT 0x0017 -typedef struct { - uint8_t status; - uint16_t timeout; -} __attribute__ ((packed)) read_page_timeout_rp; -#define READ_PAGE_TIMEOUT_RP_SIZE 3 - -#define OCF_WRITE_PAGE_TIMEOUT 0x0018 -typedef struct { - uint16_t timeout; -} __attribute__ ((packed)) write_page_timeout_cp; -#define WRITE_PAGE_TIMEOUT_CP_SIZE 2 - -#define OCF_READ_PAGE_ACTIVITY 0x001B -typedef struct { - uint8_t status; - uint16_t interval; - uint16_t window; -} __attribute__ ((packed)) read_page_activity_rp; -#define READ_PAGE_ACTIVITY_RP_SIZE 5 - -#define OCF_WRITE_PAGE_ACTIVITY 0x001C -typedef struct { - uint16_t interval; - uint16_t window; -} __attribute__ ((packed)) write_page_activity_cp; -#define WRITE_PAGE_ACTIVITY_CP_SIZE 4 - -#define OCF_READ_INQ_ACTIVITY 0x001D -typedef struct { - uint8_t status; - uint16_t interval; - uint16_t window; -} __attribute__ ((packed)) read_inq_activity_rp; -#define READ_INQ_ACTIVITY_RP_SIZE 5 - -#define OCF_WRITE_INQ_ACTIVITY 0x001E -typedef struct { - uint16_t interval; - uint16_t window; -} __attribute__ ((packed)) write_inq_activity_cp; -#define WRITE_INQ_ACTIVITY_CP_SIZE 4 - -#define OCF_READ_LINK_SUPERVISION_TIMEOUT 0x0036 -typedef struct { - uint8_t status; - uint16_t handle; - uint16_t link_sup_to; -} __attribute__ ((packed)) read_link_supervision_timeout_rp; -#define READ_LINK_SUPERVISION_TIMEOUT_RP_SIZE 5 - -#define OCF_WRITE_LINK_SUPERVISION_TIMEOUT 0x0037 -typedef struct { - uint16_t handle; - uint16_t link_sup_to; -} __attribute__ ((packed)) write_link_supervision_timeout_cp; -#define WRITE_LINK_SUPERVISION_TIMEOUT_CP_SIZE 4 - -#define OCF_READ_AUTH_ENABLE 0x001F -#define OCF_WRITE_AUTH_ENABLE 0x0020 - #define AUTH_DISABLED 0x00 - #define AUTH_ENABLED 0x01 - -#define OCF_READ_ENCRYPT_MODE 0x0021 -#define OCF_WRITE_ENCRYPT_MODE 0x0022 - #define ENCRYPT_DISABLED 0x00 - #define ENCRYPT_P2P 0x01 - #define ENCRYPT_BOTH 0x02 - -#define OCF_WRITE_CA_TIMEOUT 0x0016 -#define OCF_WRITE_PG_TIMEOUT 0x0018 - -#define OCF_WRITE_SCAN_ENABLE 0x001A - #define SCAN_DISABLED 0x00 - #define SCAN_INQUIRY 0x01 - #define SCAN_PAGE 0x02 - -#define OCF_SET_EVENT_FLT 0x0005 -typedef struct { - uint8_t flt_type; - uint8_t cond_type; - uint8_t condition[0]; -} __attribute__ ((packed)) set_event_flt_cp; -#define SET_EVENT_FLT_CP_SIZE 2 - -/* Filter types */ -#define FLT_CLEAR_ALL 0x00 -#define FLT_INQ_RESULT 0x01 -#define FLT_CONN_SETUP 0x02 - -/* CONN_SETUP Condition types */ -#define CONN_SETUP_ALLOW_ALL 0x00 -#define CONN_SETUP_ALLOW_CLASS 0x01 -#define CONN_SETUP_ALLOW_BDADDR 0x02 - -/* CONN_SETUP Conditions */ -#define CONN_SETUP_AUTO_OFF 0x01 -#define CONN_SETUP_AUTO_ON 0x02 - -#define OCF_CHANGE_LOCAL_NAME 0x0013 -typedef struct { - uint8_t name[248]; -} __attribute__ ((packed)) change_local_name_cp; -#define CHANGE_LOCAL_NAME_CP_SIZE 248 - -#define OCF_READ_LOCAL_NAME 0x0014 -typedef struct { - uint8_t status; - uint8_t name[248]; -} __attribute__ ((packed)) read_local_name_rp; -#define READ_LOCAL_NAME_RP_SIZE 249 - -#define OCF_READ_CLASS_OF_DEV 0x0023 -typedef struct { - uint8_t status; - uint8_t dev_class[3]; -} __attribute__ ((packed)) read_class_of_dev_rp; -#define READ_CLASS_OF_DEV_RP_SIZE 4 - -#define OCF_WRITE_CLASS_OF_DEV 0x0024 -typedef struct { - uint8_t dev_class[3]; -} __attribute__ ((packed)) write_class_of_dev_cp; -#define WRITE_CLASS_OF_DEV_CP_SIZE 3 - -#define OCF_READ_VOICE_SETTING 0x0025 -typedef struct { - uint8_t status; - uint16_t voice_setting; -} __attribute__ ((packed)) read_voice_setting_rp; -#define READ_VOICE_SETTING_RP_SIZE 3 - -#define OCF_WRITE_VOICE_SETTING 0x0026 -typedef struct { - uint16_t voice_setting; -} __attribute__ ((packed)) write_voice_setting_cp; -#define WRITE_VOICE_SETTING_CP_SIZE 2 - -#define OCF_READ_TRANSMIT_POWER_LEVEL 0x002D -typedef struct { - uint16_t handle; - uint8_t type; -} __attribute__ ((packed)) read_transmit_power_level_cp; -#define READ_TRANSMIT_POWER_LEVEL_CP_SIZE 3 -typedef struct { - uint8_t status; - uint16_t handle; - int8_t level; -} __attribute__ ((packed)) read_transmit_power_level_rp; -#define READ_TRANSMIT_POWER_LEVEL_RP_SIZE 4 +} __attribute__ ((packed)) status_bdaddr_rp; +#define STATUS_BDADDR_RP_SIZE 7 -#define OCF_HOST_BUFFER_SIZE 0x0033 -typedef struct { - uint16_t acl_mtu; - uint8_t sco_mtu; - uint16_t acl_max_pkt; - uint16_t sco_max_pkt; -} __attribute__ ((packed)) host_buffer_size_cp; -#define HOST_BUFFER_SIZE_CP_SIZE 7 +#define OCF_INQUIRY_CANCEL 0x0002 -#define MAX_IAC_LAP 0x40 -#define OCF_READ_CURRENT_IAC_LAP 0x0039 +#define OCF_PERIODIC_INQUIRY 0x0003 typedef struct { - uint8_t status; - uint8_t num_current_iac; - uint8_t lap[3][MAX_IAC_LAP]; -} __attribute__ ((packed)) read_current_iac_lap_rp; -#define READ_CURRENT_IAC_LAP_RP_SIZE 2+3*MAX_IAC_LAP - -#define OCF_WRITE_CURRENT_IAC_LAP 0x003A -typedef struct { - uint8_t num_current_iac; - uint8_t lap[3][MAX_IAC_LAP]; -} __attribute__ ((packed)) write_current_iac_lap_cp; -#define WRITE_CURRENT_IAC_LAP_CP_SIZE 1+3*MAX_IAC_LAP + uint16_t max_period; /* 1.28s units */ + uint16_t min_period; /* 1.28s units */ + uint8_t lap[3]; + uint8_t length; /* 1.28s units */ + uint8_t num_rsp; +} __attribute__ ((packed)) periodic_inquiry_cp; +#define PERIODIC_INQUIRY_CP_SIZE 9 -/* Link Control */ -#define OGF_LINK_CTL 0x01 +#define OCF_EXIT_PERIODIC_INQUIRY 0x0004 -#define OCF_CREATE_CONN 0x0005 +#define OCF_CREATE_CONN 0x0005 typedef struct { bdaddr_t bdaddr; - uint16_t pkt_type; - uint8_t pscan_rep_mode; - uint8_t pscan_mode; - uint16_t clock_offset; - uint8_t role_switch; + uint16_t pkt_type; + uint8_t pscan_rep_mode; + uint8_t pscan_mode; + uint16_t clock_offset; + uint8_t role_switch; } __attribute__ ((packed)) create_conn_cp; #define CREATE_CONN_CP_SIZE 13 -#define OCF_ACCEPT_CONN_REQ 0x0009 -typedef struct { - bdaddr_t bdaddr; - uint8_t role; -} __attribute__ ((packed)) accept_conn_req_cp; -#define ACCEPT_CONN_REQ_CP_SIZE 7 - -#define OCF_REJECT_CONN_REQ 0x000a -typedef struct { - bdaddr_t bdaddr; - uint8_t reason; -} __attribute__ ((packed)) reject_conn_req_cp; -#define REJECT_CONN_REQ_CP_SIZE 7 - -#define OCF_DISCONNECT 0x0006 +#define OCF_DISCONNECT 0x0006 typedef struct { - uint16_t handle; - uint8_t reason; + uint16_t handle; + uint8_t reason; } __attribute__ ((packed)) disconnect_cp; #define DISCONNECT_CP_SIZE 3 -#define OCF_ADD_SCO 0x0007 +#define OCF_ADD_SCO 0x0007 typedef struct { - uint16_t handle; - uint16_t pkt_type; + uint16_t handle; + uint16_t pkt_type; } __attribute__ ((packed)) add_sco_cp; #define ADD_SCO_CP_SIZE 4 -#define OCF_INQUIRY 0x0001 -typedef struct { - uint8_t lap[3]; - uint8_t length; - uint8_t num_rsp; -} __attribute__ ((packed)) inquiry_cp; -#define INQUIRY_CP_SIZE 5 - +#define OCF_ACCEPT_CONN_REQ 0x0009 typedef struct { - uint8_t status; bdaddr_t bdaddr; -} __attribute__ ((packed)) status_bdaddr_rp; -#define STATUS_BDADDR_RP_SIZE 7 - -#define OCF_INQUIRY_CANCEL 0x0002 + uint8_t role; +} __attribute__ ((packed)) accept_conn_req_cp; +#define ACCEPT_CONN_REQ_CP_SIZE 7 -#define OCF_PERIODIC_INQUIRY 0x0003 +#define OCF_REJECT_CONN_REQ 0x000a typedef struct { - uint16_t max_period; /* 1.28s units */ - uint16_t min_period; /* 1.28s units */ - uint8_t lap[3]; - uint8_t length; /* 1.28s units */ - uint8_t num_rsp; -} __attribute__ ((packed)) periodic_inquiry_cp; -#define PERIODIC_INQUIRY_CP_SIZE 9 - -#define OCF_EXIT_PERIODIC_INQUIRY 0x0004 + bdaddr_t bdaddr; + uint8_t reason; +} __attribute__ ((packed)) reject_conn_req_cp; +#define REJECT_CONN_REQ_CP_SIZE 7 -#define OCF_LINK_KEY_REPLY 0x000B -#define OCF_LINK_KEY_NEG_REPLY 0x000C +#define OCF_LINK_KEY_REPLY 0x000B typedef struct { bdaddr_t bdaddr; - uint8_t link_key[16]; + uint8_t link_key[16]; } __attribute__ ((packed)) link_key_reply_cp; #define LINK_KEY_REPLY_CP_SIZE 22 -#define OCF_PIN_CODE_REPLY 0x000D -#define OCF_PIN_CODE_NEG_REPLY 0x000E +#define OCF_LINK_KEY_NEG_REPLY 0x000C + +#define OCF_PIN_CODE_REPLY 0x000D typedef struct { bdaddr_t bdaddr; - uint8_t pin_len; - uint8_t pin_code[16]; + uint8_t pin_len; + uint8_t pin_code[16]; } __attribute__ ((packed)) pin_code_reply_cp; #define PIN_CODE_REPLY_CP_SIZE 23 -#define OCF_SET_CONN_PTYPE 0x000F +#define OCF_PIN_CODE_NEG_REPLY 0x000E + +#define OCF_SET_CONN_PTYPE 0x000F typedef struct { uint16_t handle; uint16_t pkt_type; } __attribute__ ((packed)) set_conn_ptype_cp; #define SET_CONN_PTYPE_CP_SIZE 4 -#define OCF_AUTH_REQUESTED 0x0011 +#define OCF_AUTH_REQUESTED 0x0011 typedef struct { uint16_t handle; } __attribute__ ((packed)) auth_requested_cp; #define AUTH_REQUESTED_CP_SIZE 2 -#define OCF_SET_CONN_ENCRYPT 0x0013 +#define OCF_SET_CONN_ENCRYPT 0x0013 typedef struct { uint16_t handle; - uint8_t encrypt; + uint8_t encrypt; } __attribute__ ((packed)) set_conn_encrypt_cp; #define SET_CONN_ENCRYPT_CP_SIZE 3 -#define OCF_REMOTE_NAME_REQ 0x0019 +#define OCF_REMOTE_NAME_REQ 0x0019 typedef struct { bdaddr_t bdaddr; - uint8_t pscan_rep_mode; - uint8_t pscan_mode; + uint8_t pscan_rep_mode; + uint8_t pscan_mode; uint16_t clock_offset; } __attribute__ ((packed)) remote_name_req_cp; #define REMOTE_NAME_REQ_CP_SIZE 10 -#define OCF_READ_REMOTE_FEATURES 0x001B +#define OCF_READ_REMOTE_FEATURES 0x001B typedef struct { uint16_t handle; } __attribute__ ((packed)) read_remote_features_cp; #define READ_REMOTE_FEATURES_CP_SIZE 2 -#define OCF_READ_REMOTE_VERSION 0x001D +#define OCF_READ_REMOTE_VERSION 0x001D typedef struct { uint16_t handle; } __attribute__ ((packed)) read_remote_version_cp; #define READ_REMOTE_VERSION_CP_SIZE 2 -#define OCF_READ_CLOCK_OFFSET 0x001F +#define OCF_READ_CLOCK_OFFSET 0x001F typedef struct { uint16_t handle; } __attribute__ ((packed)) read_clock_offset_cp; #define READ_CLOCK_OFFSET_CP_SIZE 2 /* Link Policy */ -#define OGF_LINK_POLICY 0x02 +#define OGF_LINK_POLICY 0x02 -#define OCF_HOLD_MODE 0x0001 +#define OCF_HOLD_MODE 0x0001 typedef struct { uint16_t handle; uint16_t max_interval; @@ -578,7 +364,7 @@ typedef struct { } __attribute__ ((packed)) hold_mode_cp; #define HOLD_MODE_CP_SIZE 6 -#define OCF_SNIFF_MODE 0x0003 +#define OCF_SNIFF_MODE 0x0003 typedef struct { uint16_t handle; uint16_t max_interval; @@ -588,13 +374,13 @@ typedef struct { } __attribute__ ((packed)) sniff_mode_cp; #define SNIFF_MODE_CP_SIZE 10 -#define OCF_EXIT_SNIFF_MODE 0x0004 +#define OCF_EXIT_SNIFF_MODE 0x0004 typedef struct { uint16_t handle; } __attribute__ ((packed)) exit_sniff_mode_cp; #define EXIT_SNIFF_MODE_CP_SIZE 2 -#define OCF_PARK_MODE 0x0005 +#define OCF_PARK_MODE 0x0005 typedef struct { uint16_t handle; uint16_t max_interval; @@ -602,22 +388,21 @@ typedef struct { } __attribute__ ((packed)) park_mode_cp; #define PARK_MODE_CP_SIZE 6 -#define OCF_EXIT_PARK_MODE 0x0006 +#define OCF_EXIT_PARK_MODE 0x0006 typedef struct { uint16_t handle; } __attribute__ ((packed)) exit_park_mode_cp; #define EXIT_PARK_MODE_CP_SIZE 2 +#define OCF_QOS_SETUP 0x0007 typedef struct { - uint8_t service_type; /* 1 = best effort */ + uint8_t service_type; /* 1 = best effort */ uint32_t token_rate; /* Byte per seconds */ uint32_t peak_bandwidth; /* Byte per seconds */ uint32_t latency; /* Microseconds */ uint32_t delay_variation; /* Microseconds */ } __attribute__ ((packed)) hci_qos; #define HCI_QOS_CP_SIZE 17 - -#define OCF_QOS_SETUP 0x0007 typedef struct { uint16_t handle; uint8_t flags; /* Reserved */ @@ -625,19 +410,26 @@ typedef struct { } __attribute__ ((packed)) qos_setup_cp; #define QOS_SETUP_CP_SIZE (3 + HCI_QOS_CP_SIZE) -#define OCF_ROLE_DISCOVERY 0x0009 +#define OCF_ROLE_DISCOVERY 0x0009 typedef struct { uint16_t handle; } __attribute__ ((packed)) role_discovery_cp; #define ROLE_DISCOVERY_CP_SIZE 2 typedef struct { - uint8_t status; + uint8_t status; uint16_t handle; - uint8_t role; + uint8_t role; } __attribute__ ((packed)) role_discovery_rp; #define ROLE_DISCOVERY_RP_SIZE 4 -#define OCF_READ_LINK_POLICY 0x000C +#define OCF_SWITCH_ROLE 0x000B +typedef struct { + bdaddr_t bdaddr; + uint8_t role; +} __attribute__ ((packed)) switch_role_cp; +#define SWITCH_ROLE_CP_SIZE 7 + +#define OCF_READ_LINK_POLICY 0x000C typedef struct { uint16_t handle; } __attribute__ ((packed)) read_link_policy_cp; @@ -649,14 +441,7 @@ typedef struct { } __attribute__ ((packed)) read_link_policy_rp; #define READ_LINK_POLICY_RP_SIZE 5 -#define OCF_SWITCH_ROLE 0x000B -typedef struct { - bdaddr_t bdaddr; - uint8_t role; -} __attribute__ ((packed)) switch_role_cp; -#define SWITCH_ROLE_CP_SIZE 7 - -#define OCF_WRITE_LINK_POLICY 0x000D +#define OCF_WRITE_LINK_POLICY 0x000D typedef struct { uint16_t handle; uint16_t policy; @@ -668,47 +453,264 @@ typedef struct { } __attribute__ ((packed)) write_link_policy_rp; #define WRITE_LINK_POLICY_RP_SIZE 3 +/* Host Controller and Baseband */ +#define OGF_HOST_CTL 0x03 + +#define OCF_RESET 0x0003 + +#define OCF_SET_EVENT_FLT 0x0005 +typedef struct { + uint8_t flt_type; + uint8_t cond_type; + uint8_t condition[0]; +} __attribute__ ((packed)) set_event_flt_cp; +#define SET_EVENT_FLT_CP_SIZE 2 + +/* Filter types */ +#define FLT_CLEAR_ALL 0x00 +#define FLT_INQ_RESULT 0x01 +#define FLT_CONN_SETUP 0x02 +/* CONN_SETUP Condition types */ +#define CONN_SETUP_ALLOW_ALL 0x00 +#define CONN_SETUP_ALLOW_CLASS 0x01 +#define CONN_SETUP_ALLOW_BDADDR 0x02 +/* CONN_SETUP Conditions */ +#define CONN_SETUP_AUTO_OFF 0x01 +#define CONN_SETUP_AUTO_ON 0x02 + +#define OCF_CHANGE_LOCAL_NAME 0x0013 +typedef struct { + uint8_t name[248]; +} __attribute__ ((packed)) change_local_name_cp; +#define CHANGE_LOCAL_NAME_CP_SIZE 248 + +#define OCF_READ_LOCAL_NAME 0x0014 +typedef struct { + uint8_t status; + uint8_t name[248]; +} __attribute__ ((packed)) read_local_name_rp; +#define READ_LOCAL_NAME_RP_SIZE 249 + +#define OCF_WRITE_CA_TIMEOUT 0x0016 +#define OCF_WRITE_PG_TIMEOUT 0x0018 + +#define OCF_READ_PAGE_TIMEOUT 0x0017 +typedef struct { + uint8_t status; + uint16_t timeout; +} __attribute__ ((packed)) read_page_timeout_rp; +#define READ_PAGE_TIMEOUT_RP_SIZE 3 + +#define OCF_WRITE_PAGE_TIMEOUT 0x0018 +typedef struct { + uint16_t timeout; +} __attribute__ ((packed)) write_page_timeout_cp; +#define WRITE_PAGE_TIMEOUT_CP_SIZE 2 + +#define OCF_WRITE_SCAN_ENABLE 0x001A + #define SCAN_DISABLED 0x00 + #define SCAN_INQUIRY 0x01 + #define SCAN_PAGE 0x02 + +#define OCF_READ_PAGE_ACTIVITY 0x001B +typedef struct { + uint8_t status; + uint16_t interval; + uint16_t window; +} __attribute__ ((packed)) read_page_activity_rp; +#define READ_PAGE_ACTIVITY_RP_SIZE 5 + +#define OCF_WRITE_PAGE_ACTIVITY 0x001C +typedef struct { + uint16_t interval; + uint16_t window; +} __attribute__ ((packed)) write_page_activity_cp; +#define WRITE_PAGE_ACTIVITY_CP_SIZE 4 + +#define OCF_READ_INQ_ACTIVITY 0x001D +typedef struct { + uint8_t status; + uint16_t interval; + uint16_t window; +} __attribute__ ((packed)) read_inq_activity_rp; +#define READ_INQ_ACTIVITY_RP_SIZE 5 + +#define OCF_WRITE_INQ_ACTIVITY 0x001E +typedef struct { + uint16_t interval; + uint16_t window; +} __attribute__ ((packed)) write_inq_activity_cp; +#define WRITE_INQ_ACTIVITY_CP_SIZE 4 + +#define OCF_READ_AUTH_ENABLE 0x001F + +#define OCF_WRITE_AUTH_ENABLE 0x0020 + #define AUTH_DISABLED 0x00 + #define AUTH_ENABLED 0x01 + +#define OCF_READ_ENCRYPT_MODE 0x0021 + +#define OCF_WRITE_ENCRYPT_MODE 0x0022 + #define ENCRYPT_DISABLED 0x00 + #define ENCRYPT_P2P 0x01 + #define ENCRYPT_BOTH 0x02 + +#define OCF_READ_CLASS_OF_DEV 0x0023 +typedef struct { + uint8_t status; + uint8_t dev_class[3]; +} __attribute__ ((packed)) read_class_of_dev_rp; +#define READ_CLASS_OF_DEV_RP_SIZE 4 + +#define OCF_WRITE_CLASS_OF_DEV 0x0024 +typedef struct { + uint8_t dev_class[3]; +} __attribute__ ((packed)) write_class_of_dev_cp; +#define WRITE_CLASS_OF_DEV_CP_SIZE 3 + +#define OCF_READ_VOICE_SETTING 0x0025 +typedef struct { + uint8_t status; + uint16_t voice_setting; +} __attribute__ ((packed)) read_voice_setting_rp; +#define READ_VOICE_SETTING_RP_SIZE 3 + +#define OCF_WRITE_VOICE_SETTING 0x0026 +typedef struct { + uint16_t voice_setting; +} __attribute__ ((packed)) write_voice_setting_cp; +#define WRITE_VOICE_SETTING_CP_SIZE 2 + +#define OCF_READ_TRANSMIT_POWER_LEVEL 0x002D +typedef struct { + uint16_t handle; + uint8_t type; +} __attribute__ ((packed)) read_transmit_power_level_cp; +#define READ_TRANSMIT_POWER_LEVEL_CP_SIZE 3 +typedef struct { + uint8_t status; + uint16_t handle; + int8_t level; +} __attribute__ ((packed)) read_transmit_power_level_rp; +#define READ_TRANSMIT_POWER_LEVEL_RP_SIZE 4 + +#define OCF_HOST_BUFFER_SIZE 0x0033 +typedef struct { + uint16_t acl_mtu; + uint8_t sco_mtu; + uint16_t acl_max_pkt; + uint16_t sco_max_pkt; +} __attribute__ ((packed)) host_buffer_size_cp; +#define HOST_BUFFER_SIZE_CP_SIZE 7 + +#define OCF_READ_LINK_SUPERVISION_TIMEOUT 0x0036 +typedef struct { + uint8_t status; + uint16_t handle; + uint16_t link_sup_to; +} __attribute__ ((packed)) read_link_supervision_timeout_rp; +#define READ_LINK_SUPERVISION_TIMEOUT_RP_SIZE 5 + +#define OCF_WRITE_LINK_SUPERVISION_TIMEOUT 0x0037 +typedef struct { + uint16_t handle; + uint16_t link_sup_to; +} __attribute__ ((packed)) write_link_supervision_timeout_cp; +#define WRITE_LINK_SUPERVISION_TIMEOUT_CP_SIZE 4 + +#define MAX_IAC_LAP 0x40 +#define OCF_READ_CURRENT_IAC_LAP 0x0039 +typedef struct { + uint8_t status; + uint8_t num_current_iac; + uint8_t lap[3][MAX_IAC_LAP]; +} __attribute__ ((packed)) read_current_iac_lap_rp; +#define READ_CURRENT_IAC_LAP_RP_SIZE 2+3*MAX_IAC_LAP + +#define OCF_WRITE_CURRENT_IAC_LAP 0x003A +typedef struct { + uint8_t num_current_iac; + uint8_t lap[3][MAX_IAC_LAP]; +} __attribute__ ((packed)) write_current_iac_lap_cp; +#define WRITE_CURRENT_IAC_LAP_CP_SIZE 1+3*MAX_IAC_LAP + +/* Informational Parameters */ +#define OGF_INFO_PARAM 0x04 + +#define OCF_READ_LOCAL_VERSION 0x0001 +typedef struct { + uint8_t status; + uint8_t hci_ver; + uint16_t hci_rev; + uint8_t lmp_ver; + uint16_t manufacturer; + uint16_t lmp_subver; +} __attribute__ ((packed)) read_local_version_rp; +#define READ_LOCAL_VERSION_RP_SIZE 9 + +#define OCF_READ_LOCAL_FEATURES 0x0003 +typedef struct { + uint8_t status; + uint8_t features[8]; +} __attribute__ ((packed)) read_local_features_rp; + +#define OCF_READ_BUFFER_SIZE 0x0005 +typedef struct { + uint8_t status; + uint16_t acl_mtu; + uint8_t sco_mtu; + uint16_t acl_max_pkt; + uint16_t sco_max_pkt; +} __attribute__ ((packed)) read_buffer_size_rp; + +#define OCF_READ_BD_ADDR 0x0009 +typedef struct { + uint8_t status; + bdaddr_t bdaddr; +} __attribute__ ((packed)) read_bd_addr_rp; + /* Status params */ -#define OGF_STATUS_PARAM 0x05 +#define OGF_STATUS_PARAM 0x05 -#define OCF_READ_FAILED_CONTACT_COUNTER 0x0001 +#define OCF_READ_FAILED_CONTACT_COUNTER 0x0001 typedef struct { - uint8_t status; + uint8_t status; uint16_t handle; - uint8_t counter; + uint8_t counter; } __attribute__ ((packed)) read_failed_contact_counter_rp; #define READ_FAILED_CONTACT_COUNTER_RP_SIZE 4 - -#define OCF_RESET_FAILED_CONTACT_COUNTER 0x0002 + +#define OCF_RESET_FAILED_CONTACT_COUNTER 0x0002 typedef struct { - uint8_t status; + uint8_t status; uint16_t handle; } __attribute__ ((packed)) reset_failed_contact_counter_rp; -#define OCF_RESET_FAILED_CONTACT_COUNTER_RP_SIZE 4 - -#define OCF_GET_LINK_QUALITY 0x0003 +#define RESET_FAILED_CONTACT_COUNTER_RP_SIZE 4 + +#define OCF_GET_LINK_QUALITY 0x0003 typedef struct { - uint8_t status; + uint8_t status; uint16_t handle; - uint8_t link_quality; + uint8_t link_quality; } __attribute__ ((packed)) get_link_quality_rp; #define GET_LINK_QUALITY_RP_SIZE 4 - -#define OCF_READ_RSSI 0x0005 + +#define OCF_READ_RSSI 0x0005 typedef struct { - uint8_t status; + uint8_t status; uint16_t handle; - int8_t rssi; + int8_t rssi; } __attribute__ ((packed)) read_rssi_rp; #define READ_RSSI_RP_SIZE 4 - + /* Testing commands */ -#define OGF_TESTING_CMD 0x3e +#define OGF_TESTING_CMD 0x3e /* Vendor specific commands */ -#define OGF_VENDOR_CMD 0x3f +#define OGF_VENDOR_CMD 0x3f /* ---- HCI Events ---- */ + #define EVT_INQUIRY_COMPLETE 0x01 #define EVT_INQUIRY_RESULT 0x02 -- cgit From 630afac09ee16b0e398b2ab87beba55dec8d7f89 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Thu, 3 Jul 2003 00:02:25 +0000 Subject: Sort HCI events --- include/hci.h | 176 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 88 insertions(+), 88 deletions(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 99f01f7f..89ef19b6 100644 --- a/include/hci.h +++ b/include/hci.h @@ -280,7 +280,7 @@ typedef struct { } __attribute__ ((packed)) accept_conn_req_cp; #define ACCEPT_CONN_REQ_CP_SIZE 7 -#define OCF_REJECT_CONN_REQ 0x000a +#define OCF_REJECT_CONN_REQ 0x000A typedef struct { bdaddr_t bdaddr; uint8_t reason; @@ -711,143 +711,155 @@ typedef struct { /* ---- HCI Events ---- */ -#define EVT_INQUIRY_COMPLETE 0x01 +#define EVT_INQUIRY_COMPLETE 0x01 -#define EVT_INQUIRY_RESULT 0x02 +#define EVT_INQUIRY_RESULT 0x02 typedef struct { bdaddr_t bdaddr; - uint8_t pscan_rep_mode; - uint8_t pscan_period_mode; - uint8_t pscan_mode; - uint8_t dev_class[3]; + uint8_t pscan_rep_mode; + uint8_t pscan_period_mode; + uint8_t pscan_mode; + uint8_t dev_class[3]; uint16_t clock_offset; } __attribute__ ((packed)) inquiry_info; #define INQUIRY_INFO_SIZE 14 -#define EVT_CONN_COMPLETE 0x03 +#define EVT_CONN_COMPLETE 0x03 typedef struct { - uint8_t status; + uint8_t status; uint16_t handle; bdaddr_t bdaddr; - uint8_t link_type; - uint8_t encr_mode; + uint8_t link_type; + uint8_t encr_mode; } __attribute__ ((packed)) evt_conn_complete; #define EVT_CONN_COMPLETE_SIZE 13 -#define EVT_CONN_REQUEST 0x04 +#define EVT_CONN_REQUEST 0x04 typedef struct { bdaddr_t bdaddr; - uint8_t dev_class[3]; + uint8_t dev_class[3]; uint8_t link_type; } __attribute__ ((packed)) evt_conn_request; #define EVT_CONN_REQUEST_SIZE 10 -#define EVT_DISCONN_COMPLETE 0x05 +#define EVT_DISCONN_COMPLETE 0x05 typedef struct { - uint8_t status; + uint8_t status; uint16_t handle; - uint8_t reason; + uint8_t reason; } __attribute__ ((packed)) evt_disconn_complete; #define EVT_DISCONN_COMPLETE_SIZE 4 -#define EVT_AUTH_COMPLETE 0x06 +#define EVT_AUTH_COMPLETE 0x06 typedef struct { - uint8_t status; + uint8_t status; uint16_t handle; } __attribute__ ((packed)) evt_auth_complete; #define EVT_AUTH_COMPLETE_SIZE 3 #define EVT_REMOTE_NAME_REQ_COMPLETE 0x07 typedef struct { - uint8_t status; + uint8_t status; bdaddr_t bdaddr; - uint8_t name[248]; + uint8_t name[248]; } __attribute__ ((packed)) evt_remote_name_req_complete; #define EVT_REMOTE_NAME_REQ_COMPLETE_SIZE 255 -#define EVT_ENCRYPT_CHANGE 0x08 +#define EVT_ENCRYPT_CHANGE 0x08 typedef struct { - uint8_t status; + uint8_t status; uint16_t handle; - uint8_t encrypt; + uint8_t encrypt; } __attribute__ ((packed)) evt_encrypt_change; #define EVT_ENCRYPT_CHANGE_SIZE 5 -#define EVT_QOS_SETUP_COMPLETE 0x0D +#define EVT_READ_REMOTE_FEATURES_COMPLETE 0x0B typedef struct { - uint8_t status; + uint8_t status; uint16_t handle; - uint8_t flags; /* Reserved */ - hci_qos qos; -} __attribute__ ((packed)) evt_qos_setup_complete; -#define EVT_QOS_SETUP_COMPLETE_SIZE (4 + HCI_QOS_CP_SIZE) + uint8_t features[8]; +} __attribute__ ((packed)) evt_read_remote_features_complete; +#define EVT_READ_REMOTE_FEATURES_COMPLETE_SIZE 11 -#define EVT_MODE_CHANGE 0x14 +#define EVT_READ_REMOTE_VERSION_COMPLETE 0x0C typedef struct { uint8_t status; uint16_t handle; - uint8_t mode; - uint16_t interval; -} __attribute__ ((packed)) evt_mode_change; -#define EVT_MODE_CHANGE_SIZE 6 + uint8_t lmp_ver; + uint16_t manufacturer; + uint16_t lmp_subver; +} __attribute__ ((packed)) evt_read_remote_version_complete; +#define EVT_READ_REMOTE_VERSION_COMPLETE_SIZE 8 -#define EVT_QOS_VIOLATION 0x1E +#define EVT_QOS_SETUP_COMPLETE 0x0D typedef struct { + uint8_t status; uint16_t handle; -} __attribute__ ((packed)) evt_qos_violation; -#define EVT_QOS_VIOLATION_SIZE 2 + uint8_t flags; /* Reserved */ + hci_qos qos; +} __attribute__ ((packed)) evt_qos_setup_complete; +#define EVT_QOS_SETUP_COMPLETE_SIZE (4 + HCI_QOS_CP_SIZE) -#define EVT_CMD_COMPLETE 0x0e +#define EVT_CMD_COMPLETE 0x0E typedef struct { - uint8_t ncmd; - uint16_t opcode; + uint8_t ncmd; + uint16_t opcode; } __attribute__ ((packed)) evt_cmd_complete; #define EVT_CMD_COMPLETE_SIZE 3 -#define EVT_CMD_STATUS 0x0f +#define EVT_CMD_STATUS 0x0F typedef struct { - uint8_t status; - uint8_t ncmd; + uint8_t status; + uint8_t ncmd; uint16_t opcode; } __attribute__ ((packed)) evt_cmd_status; #define EVT_CMD_STATUS_SIZE 4 -#define EVT_NUM_COMP_PKTS 0x13 +#define EVT_ROLE_CHANGE 0x12 +typedef struct { + uint8_t status; + bdaddr_t bdaddr; + uint8_t role; +} __attribute__ ((packed)) evt_role_change; +#define EVT_ROLE_CHANGE_SIZE 8 + +#define EVT_NUM_COMP_PKTS 0x13 typedef struct { uint8_t num_hndl; /* variable length part */ } __attribute__ ((packed)) evt_num_comp_pkts; #define EVT_NUM_COMP_PKTS_SIZE 1 -#define EVT_ROLE_CHANGE 0x12 +#define EVT_MODE_CHANGE 0x14 typedef struct { - uint8_t status; - bdaddr_t bdaddr; - uint8_t role; -} __attribute__ ((packed)) evt_role_change; -#define EVT_ROLE_CHANGE_SIZE 8 + uint8_t status; + uint16_t handle; + uint8_t mode; + uint16_t interval; +} __attribute__ ((packed)) evt_mode_change; +#define EVT_MODE_CHANGE_SIZE 6 -#define EVT_PIN_CODE_REQ 0x16 +#define EVT_PIN_CODE_REQ 0x16 typedef struct { bdaddr_t bdaddr; } __attribute__ ((packed)) evt_pin_code_req; #define EVT_PIN_CODE_REQ_SIZE 6 -#define EVT_LINK_KEY_REQ 0x17 +#define EVT_LINK_KEY_REQ 0x17 typedef struct { bdaddr_t bdaddr; } __attribute__ ((packed)) evt_link_key_req; #define EVT_LINK_KEY_REQ_SIZE 6 -#define EVT_LINK_KEY_NOTIFY 0x18 +#define EVT_LINK_KEY_NOTIFY 0x18 typedef struct { bdaddr_t bdaddr; - uint8_t link_key[16]; - uint8_t key_type; + uint8_t link_key[16]; + uint8_t key_type; } __attribute__ ((packed)) evt_link_key_notify; #define EVT_LINK_KEY_NOTIFY_SIZE 23 -#define EVT_READ_CLOCK_OFFSET_COMPLETE 0x1C +#define EVT_READ_CLOCK_OFFSET_COMPLETE 0x1C typedef struct { uint8_t status; uint16_t handle; @@ -855,41 +867,33 @@ typedef struct { } __attribute__ ((packed)) evt_read_clock_offset_complete; #define EVT_READ_CLOCK_OFFSET_COMPLETE_SIZE 5 -#define EVT_CONN_PTYPE_CHANGED 0x1D +#define EVT_CONN_PTYPE_CHANGED 0x1D typedef struct { - uint8_t status; - uint16_t handle; - uint16_t ptype; + uint8_t status; + uint16_t handle; + uint16_t ptype; } __attribute__ ((packed)) evt_conn_ptype_changed; #define EVT_CONN_PTYPE_CHANGED_SIZE 5 -#define EVT_READ_REMOTE_FEATURES_COMPLETE 0x0B +#define EVT_QOS_VIOLATION 0x1E typedef struct { - uint8_t status; uint16_t handle; - uint8_t features[8]; -} __attribute__ ((packed)) evt_read_remote_features_complete; -#define EVT_READ_REMOTE_FEATURES_COMPLETE_SIZE 11 +} __attribute__ ((packed)) evt_qos_violation; +#define EVT_QOS_VIOLATION_SIZE 2 -#define EVT_READ_REMOTE_VERSION_COMPLETE 0x0C -typedef struct { - uint8_t status; - uint16_t handle; - uint8_t lmp_ver; - uint16_t manufacturer; - uint16_t lmp_subver; -} __attribute__ ((packed)) evt_read_remote_version_complete; -#define EVT_READ_REMOTE_VERSION_COMPLETE_SIZE 8 +#define EVT_TESTING 0xFE + +#define EVT_VENDOR 0xFF /* Internal events generated by BlueZ stack */ -#define EVT_STACK_INTERNAL 0xfd +#define EVT_STACK_INTERNAL 0xFD typedef struct { uint16_t type; - uint8_t data[0]; + uint8_t data[0]; } __attribute__ ((packed)) evt_stack_internal; #define EVT_STACK_INTERNAL_SIZE 2 -#define EVT_SI_DEVICE 0x01 +#define EVT_SI_DEVICE 0x01 typedef struct { uint16_t event; uint16_t dev_id; @@ -901,25 +905,21 @@ typedef struct { uint16_t event; uint16_t proto; uint16_t subproto; - uint8_t incoming; + uint8_t incoming; } __attribute__ ((packed)) evt_si_security; -#define EVT_TESTING 0xfe - -#define EVT_VENDOR 0xff - /* -------- HCI Packet structures -------- */ #define HCI_TYPE_LEN 1 typedef struct { uint16_t opcode; /* OCF & OGF */ - uint8_t plen; + uint8_t plen; } __attribute__ ((packed)) hci_command_hdr; #define HCI_COMMAND_HDR_SIZE 3 typedef struct { - uint8_t evt; - uint8_t plen; + uint8_t evt; + uint8_t plen; } __attribute__ ((packed)) hci_event_hdr; #define HCI_EVENT_HDR_SIZE 2 @@ -931,7 +931,7 @@ typedef struct { typedef struct { uint16_t handle; - uint8_t dlen; + uint8_t dlen; } __attribute__ ((packed)) hci_sco_hdr; #define HCI_SCO_HDR_SIZE 3 @@ -957,8 +957,8 @@ typedef struct { #define HCI_CMSG_TSTAMP 0x0002 struct sockaddr_hci { - sa_family_t hci_family; - unsigned short hci_dev; + sa_family_t hci_family; + unsigned short hci_dev; }; #define HCI_DEV_NONE 0xffff -- cgit From aac33d6b2e0c3c7b021478feb320afd8c812bda9 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Tue, 18 Nov 2003 11:36:20 +0000 Subject: Add decoding of Bluetooth 1.2 features --- include/hci.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 89ef19b6..fee39c20 100644 --- a/include/hci.h +++ b/include/hci.h @@ -200,6 +200,23 @@ enum { #define LMP_PSCHEME 0x02 #define LMP_PCONTROL 0x04 #define LMP_TRSP_SCO 0x08 +#define LMP_BCAST_ENC 0x80 + +#define LMP_ENH_ISCAN 0x08 +#define LMP_ILACE_ISCAN 0x10 +#define LMP_ILACE_PSCAN 0x20 +#define LMP_RSSI_INQ 0x40 +#define LMP_ESCO 0x80 + +#define LMP_EV4 0x01 +#define LMP_EV5 0x02 +#define LMP_AFH_CAP_SLV 0x08 +#define LMP_AFH_CLS_SLV 0x10 + +#define LMP_AFH_CAP_MST 0x08 +#define LMP_AFH_CLS_MST 0x10 + +#define LMP_EXT_FEAT 0x80 /* Link policies */ #define HCI_LP_RSWITCH 0x0001 -- cgit From 764abe23a0d4ede999f1f34ee0e310c0eeaaff79 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sat, 3 Apr 2004 05:11:38 +0000 Subject: Update copyright information --- include/hci.h | 108 ++++++++++++++++++++++++++++++---------------------------- 1 file changed, 55 insertions(+), 53 deletions(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index fee39c20..fc57bbca 100644 --- a/include/hci.h +++ b/include/hci.h @@ -1,28 +1,30 @@ -/* - BlueZ - Bluetooth protocol stack for Linux - Copyright (C) 2000-2001 Qualcomm Incorporated - - Written 2000,2001 by Maxim Krasnyansky - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License version 2 as - published by the Free Software Foundation; - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. - IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY - CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, - COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS - SOFTWARE IS DISCLAIMED. -*/ - /* + * + * BlueZ - Bluetooth protocol stack for Linux + * + * Copyright (C) 2000-2001 Qualcomm Incorporated + * Copyright (C) 2002-2003 Maxim Krasnyansky + * Copyright (C) 2002-2004 Marcel Holtmann + * + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation; + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY + * CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, + * COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS + * SOFTWARE IS DISCLAIMED. + * + * * $Id$ */ @@ -33,7 +35,7 @@ extern "C" { #endif -#define HCI_MAX_DEV 16 +#define HCI_MAX_DEV 16 #define HCI_MAX_ACL_SIZE 1024 #define HCI_MAX_SCO_SIZE 255 @@ -42,7 +44,7 @@ extern "C" { /* HCI dev events */ #define HCI_DEV_REG 1 -#define HCI_DEV_UNREG 2 +#define HCI_DEV_UNREG 2 #define HCI_DEV_UP 3 #define HCI_DEV_DOWN 4 #define HCI_DEV_SUSPEND 5 @@ -52,8 +54,8 @@ extern "C" { #define HCI_VHCI 0 #define HCI_USB 1 #define HCI_PCCARD 2 -#define HCI_UART 3 -#define HCI_RS232 4 +#define HCI_UART 3 +#define HCI_RS232 4 #define HCI_PCI 5 /* HCI device flags */ @@ -72,40 +74,40 @@ enum { }; /* HCI ioctl defines */ -#define HCIDEVUP _IOW('H', 201, int) -#define HCIDEVDOWN _IOW('H', 202, int) -#define HCIDEVRESET _IOW('H', 203, int) -#define HCIDEVRESTAT _IOW('H', 204, int) - -#define HCIGETDEVLIST _IOR('H', 210, int) -#define HCIGETDEVINFO _IOR('H', 211, int) -#define HCIGETCONNLIST _IOR('H', 212, int) -#define HCIGETCONNINFO _IOR('H', 213, int) - -#define HCISETRAW _IOW('H', 220, int) -#define HCISETSCAN _IOW('H', 221, int) -#define HCISETAUTH _IOW('H', 222, int) -#define HCISETENCRYPT _IOW('H', 223, int) -#define HCISETPTYPE _IOW('H', 224, int) -#define HCISETLINKPOL _IOW('H', 225, int) -#define HCISETLINKMODE _IOW('H', 226, int) -#define HCISETACLMTU _IOW('H', 227, int) -#define HCISETSCOMTU _IOW('H', 228, int) - -#define HCIINQUIRY _IOR('H', 240, int) +#define HCIDEVUP _IOW('H', 201, int) +#define HCIDEVDOWN _IOW('H', 202, int) +#define HCIDEVRESET _IOW('H', 203, int) +#define HCIDEVRESTAT _IOW('H', 204, int) + +#define HCIGETDEVLIST _IOR('H', 210, int) +#define HCIGETDEVINFO _IOR('H', 211, int) +#define HCIGETCONNLIST _IOR('H', 212, int) +#define HCIGETCONNINFO _IOR('H', 213, int) + +#define HCISETRAW _IOW('H', 220, int) +#define HCISETSCAN _IOW('H', 221, int) +#define HCISETAUTH _IOW('H', 222, int) +#define HCISETENCRYPT _IOW('H', 223, int) +#define HCISETPTYPE _IOW('H', 224, int) +#define HCISETLINKPOL _IOW('H', 225, int) +#define HCISETLINKMODE _IOW('H', 226, int) +#define HCISETACLMTU _IOW('H', 227, int) +#define HCISETSCOMTU _IOW('H', 228, int) + +#define HCIINQUIRY _IOR('H', 240, int) /* HCI timeouts */ -#define HCI_CONN_TIMEOUT (HZ * 40) -#define HCI_DISCONN_TIMEOUT (HZ * 2) +#define HCI_CONN_TIMEOUT (HZ * 40) +#define HCI_DISCONN_TIMEOUT (HZ * 2) #define HCI_CONN_IDLE_TIMEOUT (HZ * 60) #ifndef __NO_HCI_DEFS /* HCI Packet types */ #define HCI_COMMAND_PKT 0x01 -#define HCI_ACLDATA_PKT 0x02 -#define HCI_SCODATA_PKT 0x03 +#define HCI_ACLDATA_PKT 0x02 +#define HCI_SCODATA_PKT 0x03 #define HCI_EVENT_PKT 0x04 #define HCI_UNKNOWN_PKT 0xff -- cgit From 6caf64335ab07e1bd138e11a1823ba9baa209fef Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sat, 24 Apr 2004 12:09:53 +0000 Subject: Add features and packet types from EDR prototyping specification --- include/hci.h | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index fc57bbca..ce5080ef 100644 --- a/include/hci.h +++ b/include/hci.h @@ -112,17 +112,31 @@ enum { #define HCI_UNKNOWN_PKT 0xff /* HCI Packet types */ -#define HCI_DM1 0x0008 -#define HCI_DM3 0x0400 -#define HCI_DM5 0x4000 -#define HCI_DH1 0x0010 -#define HCI_DH3 0x0800 -#define HCI_DH5 0x8000 +#define HCI_2DH1 0x0002 +#define HCI_3DH1 0x0004 +#define HCI_DM1 0x0008 +#define HCI_DH1 0x0010 +#define HCI_2DH3 0x0100 +#define HCI_3DH3 0x0200 +#define HCI_DM3 0x0400 +#define HCI_DH3 0x0800 +#define HCI_2DH5 0x1000 +#define HCI_3DH5 0x2000 +#define HCI_DM5 0x4000 +#define HCI_DH5 0x8000 #define HCI_HV1 0x0020 #define HCI_HV2 0x0040 #define HCI_HV3 0x0080 +#define HCI_EV3 0x0008 +#define HCI_EV4 0x0010 +#define HCI_EV5 0x0020 +#define HCI_2EV3 0x0040 +#define HCI_3EV3 0x0080 +#define HCI_2EV5 0x0100 +#define HCI_3EV5 0x0200 + #define SCO_PTYPE_MASK (HCI_HV1 | HCI_HV2 | HCI_HV3) #define ACL_PTYPE_MASK (~SCO_PTYPE_MASK) @@ -204,6 +218,8 @@ enum { #define LMP_TRSP_SCO 0x08 #define LMP_BCAST_ENC 0x80 +#define LMP_EDR_ACL_2M 0x02 +#define LMP_EDR_ACL_3M 0x04 #define LMP_ENH_ISCAN 0x08 #define LMP_ILACE_ISCAN 0x10 #define LMP_ILACE_PSCAN 0x20 @@ -214,9 +230,14 @@ enum { #define LMP_EV5 0x02 #define LMP_AFH_CAP_SLV 0x08 #define LMP_AFH_CLS_SLV 0x10 +#define LMP_EDR_3SLOT 0x80 +#define LMP_EDR_5SLOT 0x01 #define LMP_AFH_CAP_MST 0x08 #define LMP_AFH_CLS_MST 0x10 +#define LMP_EDR_ESCO_2M 0x20 +#define LMP_EDR_ESCO_3M 0x40 +#define LMP_EDR_3S_ESCO 0x80 #define LMP_EXT_FEAT 0x80 -- cgit From 4b647efc5c26a0aedfd43fcc7914d31d5bf3799d Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sun, 25 Apr 2004 15:07:23 +0000 Subject: Add support for inquiry_mode and inquiry_info_with_rssi --- include/hci.h | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index ce5080ef..1b46cec7 100644 --- a/include/hci.h +++ b/include/hci.h @@ -674,6 +674,23 @@ typedef struct { } __attribute__ ((packed)) write_current_iac_lap_cp; #define WRITE_CURRENT_IAC_LAP_CP_SIZE 1+3*MAX_IAC_LAP +#define OCF_READ_INQUIRY_MODE 0x0044 +typedef struct { + uint8_t status; + uint8_t mode; +} __attribute__ ((packed)) read_inquiry_mode_rp; +#define READ_INQUIRY_MODE_RP_SIZE 2 + +#define OCF_WRITE_INQUIRY_MODE 0x0045 +typedef struct { + uint8_t mode; +} __attribute__ ((packed)) write_inquiry_mode_cp; +#define WRITE_INQUIRY_MODE_CP_SIZE 1 +typedef struct { + uint8_t status; +} __attribute__ ((packed)) write_inquiry_mode_rp; +#define WRITE_INQUIRY_MODE_RP_SIZE 1 + /* Informational Parameters */ #define OGF_INFO_PARAM 0x04 @@ -921,6 +938,17 @@ typedef struct { } __attribute__ ((packed)) evt_qos_violation; #define EVT_QOS_VIOLATION_SIZE 2 +#define EVT_INQUIRY_RESULT_WITH_RSSI 0x02 +typedef struct { + bdaddr_t bdaddr; + uint8_t pscan_rep_mode; + uint8_t pscan_period_mode; + uint8_t dev_class[3]; + uint16_t clock_offset; + uint8_t rssi; +} __attribute__ ((packed)) inquiry_info_with_rssi; +#define INQUIRY_INFO_WITH_RSSI_SIZE 14 + #define EVT_TESTING 0xFE #define EVT_VENDOR 0xFF -- cgit From d1577755011c1ea10d9752b6e984f36eea349171 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sun, 25 Apr 2004 19:06:24 +0000 Subject: Add AFH related types --- include/hci.h | 34 ++++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 1b46cec7..5ab61c77 100644 --- a/include/hci.h +++ b/include/hci.h @@ -691,6 +691,23 @@ typedef struct { } __attribute__ ((packed)) write_inquiry_mode_rp; #define WRITE_INQUIRY_MODE_RP_SIZE 1 +#define OCF_READ_AFH_MODE 0x0048 +typedef struct { + uint8_t status; + uint8_t mode; +} __attribute__ ((packed)) read_afh_mode_rp; +#define READ_AFH_MODE_RP_SIZE 2 + +#define OCF_WRITE_AFH_MODE 0x0049 +typedef struct { + uint8_t mode; +} __attribute__ ((packed)) write_afh_mode_cp; +#define WRITE_AFH_MODE_CP_SIZE 1 +typedef struct { + uint8_t status; +} __attribute__ ((packed)) write_afh_mode_rp; +#define WRITE_AFH_MODE_RP_SIZE 1 + /* Informational Parameters */ #define OGF_INFO_PARAM 0x04 @@ -734,14 +751,14 @@ typedef struct { uint8_t status; uint16_t handle; uint8_t counter; -} __attribute__ ((packed)) read_failed_contact_counter_rp; +} __attribute__ ((packed)) read_failed_contact_counter_rp; #define READ_FAILED_CONTACT_COUNTER_RP_SIZE 4 #define OCF_RESET_FAILED_CONTACT_COUNTER 0x0002 typedef struct { uint8_t status; uint16_t handle; -} __attribute__ ((packed)) reset_failed_contact_counter_rp; +} __attribute__ ((packed)) reset_failed_contact_counter_rp; #define RESET_FAILED_CONTACT_COUNTER_RP_SIZE 4 #define OCF_GET_LINK_QUALITY 0x0003 @@ -749,7 +766,7 @@ typedef struct { uint8_t status; uint16_t handle; uint8_t link_quality; -} __attribute__ ((packed)) get_link_quality_rp; +} __attribute__ ((packed)) get_link_quality_rp; #define GET_LINK_QUALITY_RP_SIZE 4 #define OCF_READ_RSSI 0x0005 @@ -757,9 +774,18 @@ typedef struct { uint8_t status; uint16_t handle; int8_t rssi; -} __attribute__ ((packed)) read_rssi_rp; +} __attribute__ ((packed)) read_rssi_rp; #define READ_RSSI_RP_SIZE 4 +#define OCF_READ_AFH_MAP 0x0006 +typedef struct { + uint8_t status; + uint16_t handle; + uint8_t mode; + uint8_t map[10]; +} __attribute__ ((packed)) read_afh_map_rp; +#define READ_AFH_MAP_RP_SIZE 14 + /* Testing commands */ #define OGF_TESTING_CMD 0x3e -- cgit From 60def948f68b9c02a9bb508e662d172ccab7ab65 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Wed, 12 May 2004 13:27:50 +0000 Subject: Fix the event code of inquiry with RSSI --- include/hci.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 5ab61c77..f498b16d 100644 --- a/include/hci.h +++ b/include/hci.h @@ -964,7 +964,7 @@ typedef struct { } __attribute__ ((packed)) evt_qos_violation; #define EVT_QOS_VIOLATION_SIZE 2 -#define EVT_INQUIRY_RESULT_WITH_RSSI 0x02 +#define EVT_INQUIRY_RESULT_WITH_RSSI 0x22 typedef struct { bdaddr_t bdaddr; uint8_t pscan_rep_mode; -- cgit From 0320edae7f734cbc1ad02b6221650ca577b46bc7 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sat, 10 Jul 2004 11:28:03 +0000 Subject: The RSSI value is signed and not unsigned --- include/hci.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index f498b16d..6cc7e4bd 100644 --- a/include/hci.h +++ b/include/hci.h @@ -971,7 +971,7 @@ typedef struct { uint8_t pscan_period_mode; uint8_t dev_class[3]; uint16_t clock_offset; - uint8_t rssi; + int8_t rssi; } __attribute__ ((packed)) inquiry_info_with_rssi; #define INQUIRY_INFO_WITH_RSSI_SIZE 14 -- cgit From a867781820a4b7a85031c54fe38399c33affdb9c Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Wed, 6 Oct 2004 17:39:53 +0000 Subject: Add support for the kernel security manager --- include/hci.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 6cc7e4bd..6cabc0b4 100644 --- a/include/hci.h +++ b/include/hci.h @@ -70,7 +70,9 @@ enum { HCI_ENCRYPT, HCI_INQUIRY, - HCI_RAW + HCI_RAW, + + HCI_SECMGR }; /* HCI ioctl defines */ @@ -94,6 +96,8 @@ enum { #define HCISETACLMTU _IOW('H', 227, int) #define HCISETSCOMTU _IOW('H', 228, int) +#define HCISETSECMGR _IOW('H', 230, int) + #define HCIINQUIRY _IOR('H', 240, int) /* HCI timeouts */ -- cgit From 81c45f31a8b4897e0a6267fb3a84b3f6b73557b7 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sat, 23 Oct 2004 17:51:55 +0000 Subject: For vendor packets set bit 0 in the packet type bitmask of the filter --- include/hci.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 6cabc0b4..00f2d21a 100644 --- a/include/hci.h +++ b/include/hci.h @@ -113,7 +113,7 @@ enum { #define HCI_ACLDATA_PKT 0x02 #define HCI_SCODATA_PKT 0x03 #define HCI_EVENT_PKT 0x04 -#define HCI_UNKNOWN_PKT 0xff +#define HCI_VENDOR_PKT 0xff /* HCI Packet types */ #define HCI_2DH1 0x0002 -- cgit From 9427f5dc51c6962692eecd7250f2a1130dbc49ad Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Thu, 4 Nov 2004 11:21:34 +0000 Subject: Add hci_change_link_key() function --- include/hci.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 00f2d21a..c8c3aa16 100644 --- a/include/hci.h +++ b/include/hci.h @@ -370,6 +370,12 @@ typedef struct { } __attribute__ ((packed)) set_conn_encrypt_cp; #define SET_CONN_ENCRYPT_CP_SIZE 3 +#define OCF_CHANGE_CONN_LINK_KEY 0x0015 +typedef struct { + uint16_t handle; +} __attribute__ ((packed)) change_conn_link_key_cp; +#define CHANGE_CONN_LINK_KEY_CP_SIZE 2 + #define OCF_REMOTE_NAME_REQ 0x0019 typedef struct { bdaddr_t bdaddr; @@ -860,6 +866,13 @@ typedef struct { } __attribute__ ((packed)) evt_encrypt_change; #define EVT_ENCRYPT_CHANGE_SIZE 5 +#define EVT_CHANGE_CONN_LINK_KEY_COMPLETE 0x09 +typedef struct { + uint8_t status; + uint16_t handle; +} __attribute__ ((packed)) evt_change_conn_link_key_complete; +#define EVT_CHANGE_CONN_LINK_KEY_COMPLETE_SIZE 3 + #define EVT_READ_REMOTE_FEATURES_COMPLETE 0x0B typedef struct { uint8_t status; -- cgit From 34fb9e62566cddafd8d4fea40e368434859ae25a Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Mon, 8 Nov 2004 21:51:52 +0000 Subject: Change HCI_KEY_MISSING to HCI_PIN_OR_KEY_MISSING --- include/hci.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index c8c3aa16..2f959fe2 100644 --- a/include/hci.h +++ b/include/hci.h @@ -150,7 +150,7 @@ enum { #define HCI_HARDWARE_FAILURE 0x03 #define HCI_PAGE_TIMEOUT 0x04 #define HCI_AUTHENTICATION_FAILURE 0x05 -#define HCI_KEY_MISSING 0x06 +#define HCI_PIN_OR_KEY_MISSING 0x06 #define HCI_MEMORY_FULL 0x07 #define HCI_CONNECTION_TIMEOUT 0x08 #define HCI_MAX_NUMBER_OF_CONNECTIONS 0x09 -- cgit From c3b2524a78dc4d27025f6cd3c8f4c56f5de012ee Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Tue, 9 Nov 2004 00:05:01 +0000 Subject: Add the missing HCI error codes --- include/hci.h | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 2f959fe2..e7f04596 100644 --- a/include/hci.h +++ b/include/hci.h @@ -186,6 +186,15 @@ enum { #define HCI_QOS_NOT_SUPPORTED 0x27 #define HCI_INSTANT_PASSED 0x28 #define HCI_PAIRING_NOT_SUPPORTED 0x29 +#define HCI_TRANSACTION_COLLISION 0x2a +#define HCI_QOS_UNACCEPTABLE_PARAMETER 0x2c +#define HCI_QOS_REJECTED 0x2d +#define HCI_CLASSIFICATION_NOT_SUPPORTED 0x2e +#define HCI_INSUFFICIENT_SECURITY 0x2f +#define HCI_PARAMETER_OUT_OF_RANGE 0x30 +#define HCI_ROLE_SWITCH_PENDING 0x32 +#define HCI_SLOT_VIOLATION 0x34 +#define HCI_ROLE_SWITCH_FAILED 0x35 /* ACL flags */ #define ACL_CONT 0x01 -- cgit From 5106bfbab293c6168eeb0f036a37efc548a632b4 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Tue, 9 Nov 2004 12:46:34 +0000 Subject: Add definition for the SECURE link mode --- include/hci.h | 1 + 1 file changed, 1 insertion(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index e7f04596..5e874e07 100644 --- a/include/hci.h +++ b/include/hci.h @@ -267,6 +267,7 @@ enum { #define HCI_LM_ENCRYPT 0x0004 #define HCI_LM_TRUSTED 0x0008 #define HCI_LM_RELIABLE 0x0010 +#define HCI_LM_SECURE 0x0020 /* ----- HCI Commands ----- */ -- cgit From 0792c0b319112503dd5129f05536f3c6ae4c746c Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Tue, 9 Nov 2004 22:52:40 +0000 Subject: Add hci_set_afh_classification() function --- include/hci.h | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 5e874e07..683c988f 100644 --- a/include/hci.h +++ b/include/hci.h @@ -694,6 +694,16 @@ typedef struct { } __attribute__ ((packed)) write_current_iac_lap_cp; #define WRITE_CURRENT_IAC_LAP_CP_SIZE 1+3*MAX_IAC_LAP +#define OCF_SET_AFH_CLASSIFICATION 0x003F +typedef struct { + uint8_t map[10]; +} __attribute__ ((packed)) set_afh_classification_cp; +#define SET_AFH_CLASSIFICATION_CP_SIZE 10 +typedef struct { + uint8_t status; +} __attribute__ ((packed)) set_afh_classification_rp; +#define SET_AFH_CLASSIFICATION_RP_SIZE 1 + #define OCF_READ_INQUIRY_MODE 0x0044 typedef struct { uint8_t status; -- cgit From 32c8a21b7da2397da204015f4bf45983226cbed9 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Thu, 13 Jan 2005 20:16:40 +0000 Subject: Add function for reading the RSSI and the link quality --- include/hci.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 683c988f..54bb8849 100644 --- a/include/hci.h +++ b/include/hci.h @@ -791,13 +791,13 @@ typedef struct { } __attribute__ ((packed)) reset_failed_contact_counter_rp; #define RESET_FAILED_CONTACT_COUNTER_RP_SIZE 4 -#define OCF_GET_LINK_QUALITY 0x0003 +#define OCF_READ_LINK_QUALITY 0x0003 typedef struct { uint8_t status; uint16_t handle; uint8_t link_quality; -} __attribute__ ((packed)) get_link_quality_rp; -#define GET_LINK_QUALITY_RP_SIZE 4 +} __attribute__ ((packed)) read_link_quality_rp; +#define READ_LINK_QUALITY_RP_SIZE 4 #define OCF_READ_RSSI 0x0005 typedef struct { -- cgit From 3d400b430ca82b915570be699d98b10648c593ac Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Thu, 13 Jan 2005 22:37:58 +0000 Subject: Add link supervision timeout functions --- include/hci.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 54bb8849..a5435cd1 100644 --- a/include/hci.h +++ b/include/hci.h @@ -677,6 +677,11 @@ typedef struct { uint16_t link_sup_to; } __attribute__ ((packed)) write_link_supervision_timeout_cp; #define WRITE_LINK_SUPERVISION_TIMEOUT_CP_SIZE 4 +typedef struct { + uint8_t status; + uint16_t handle; +} __attribute__ ((packed)) write_link_supervision_timeout_rp; +#define WRITE_LINK_SUPERVISION_TIMEOUT_RP_SIZE 3 #define MAX_IAC_LAP 0x40 #define OCF_READ_CURRENT_IAC_LAP 0x0039 -- cgit From 1e2dec5679c175fc52d2e19ebe06b9e1a7b05461 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Tue, 25 Jan 2005 21:36:28 +0000 Subject: Add hci_read_clock() function --- include/hci.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index a5435cd1..640e22da 100644 --- a/include/hci.h +++ b/include/hci.h @@ -821,6 +821,20 @@ typedef struct { } __attribute__ ((packed)) read_afh_map_rp; #define READ_AFH_MAP_RP_SIZE 14 +#define OCF_READ_CLOCK 0x0007 +typedef struct { + uint16_t handle; + uint8_t which_clock; +} __attribute__ ((packed)) read_clock_cp; +#define READ_CLOCK_CP_SIZE 3 +typedef struct { + uint8_t status; + uint16_t handle; + uint32_t clock; + uint16_t accuracy; +} __attribute__ ((packed)) read_clock_rp; +#define READ_CLOCK_RP_SIZE 9 + /* Testing commands */ #define OGF_TESTING_CMD 0x3e -- cgit From f1d23ac858b0593afe27e6b8e00a55d92804a6bb Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sat, 29 Jan 2005 03:08:19 +0000 Subject: Update the copyright year --- include/hci.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 640e22da..d2efb5fe 100644 --- a/include/hci.h +++ b/include/hci.h @@ -4,7 +4,7 @@ * * Copyright (C) 2000-2001 Qualcomm Incorporated * Copyright (C) 2002-2003 Maxim Krasnyansky - * Copyright (C) 2002-2004 Marcel Holtmann + * Copyright (C) 2002-2005 Marcel Holtmann * * * This program is free software; you can redistribute it and/or modify -- cgit From e6589c0f2a6d1dd3060a86a27d859c8fb08bf278 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sat, 29 Jan 2005 03:24:48 +0000 Subject: Add functions for reading the BD_ADDR and the features --- include/hci.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index d2efb5fe..6e41642b 100644 --- a/include/hci.h +++ b/include/hci.h @@ -762,6 +762,7 @@ typedef struct { uint8_t status; uint8_t features[8]; } __attribute__ ((packed)) read_local_features_rp; +#define READ_LOCAL_FEATURES_RP_SIZE 9 #define OCF_READ_BUFFER_SIZE 0x0005 typedef struct { @@ -771,12 +772,14 @@ typedef struct { uint16_t acl_max_pkt; uint16_t sco_max_pkt; } __attribute__ ((packed)) read_buffer_size_rp; +#define READ_BUFFER_SIZE_RP_SIZE 8 #define OCF_READ_BD_ADDR 0x0009 typedef struct { uint8_t status; bdaddr_t bdaddr; } __attribute__ ((packed)) read_bd_addr_rp; +#define READ_BD_ADDR_RP_SIZE 7 /* Status params */ #define OGF_STATUS_PARAM 0x05 -- cgit From ce742d95634d8a666a0f4df610c8eac4419d7716 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Tue, 22 Feb 2005 02:36:27 +0000 Subject: Fix IAC support --- include/hci.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 6e41642b..4ffa34fc 100644 --- a/include/hci.h +++ b/include/hci.h @@ -688,14 +688,14 @@ typedef struct { typedef struct { uint8_t status; uint8_t num_current_iac; - uint8_t lap[3][MAX_IAC_LAP]; + uint8_t lap[MAX_IAC_LAP][3]; } __attribute__ ((packed)) read_current_iac_lap_rp; #define READ_CURRENT_IAC_LAP_RP_SIZE 2+3*MAX_IAC_LAP #define OCF_WRITE_CURRENT_IAC_LAP 0x003A typedef struct { uint8_t num_current_iac; - uint8_t lap[3][MAX_IAC_LAP]; + uint8_t lap[MAX_IAC_LAP][3]; } __attribute__ ((packed)) write_current_iac_lap_cp; #define WRITE_CURRENT_IAC_LAP_CP_SIZE 1+3*MAX_IAC_LAP -- cgit From 1ec0481800a50aa14afe0513f69b4c7c04d5962a Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Tue, 22 Feb 2005 11:42:03 +0000 Subject: Support pscan_rep_mode for remote name request --- include/hci.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 4ffa34fc..b651e22d 100644 --- a/include/hci.h +++ b/include/hci.h @@ -395,6 +395,12 @@ typedef struct { } __attribute__ ((packed)) remote_name_req_cp; #define REMOTE_NAME_REQ_CP_SIZE 10 +#define OCF_REMOTE_NAME_REQ_CANCEL 0x001A +typedef struct { + bdaddr_t bdaddr; +} __attribute__ ((packed)) remote_name_req_cancel_cp; +#define REMOTE_NAME_REQ_CANCEL_CP_SIZE 6 + #define OCF_READ_REMOTE_FEATURES 0x001B typedef struct { uint16_t handle; -- cgit From 6ebd5cc786e2b2c4d0da4c69543a06e12deb7db7 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sun, 27 Mar 2005 19:16:49 +0000 Subject: Change the packet type mask --- include/hci.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index b651e22d..f22a3daa 100644 --- a/include/hci.h +++ b/include/hci.h @@ -142,7 +142,7 @@ enum { #define HCI_3EV5 0x0200 #define SCO_PTYPE_MASK (HCI_HV1 | HCI_HV2 | HCI_HV3) -#define ACL_PTYPE_MASK (~SCO_PTYPE_MASK) +#define ACL_PTYPE_MASK (HCI_DM1 | HCI_DH1 | HCI_DM3 | HCI_DH3 | HCI_DM5 | HCI_DM5) /* HCI Error codes */ #define HCI_UNKNOWN_COMMAND 0x01 -- cgit From 973c22b7aa5ba83bef47f2f523551ac81fb10fcb Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sun, 27 Mar 2005 19:21:15 +0000 Subject: Fix a small typo --- include/hci.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index f22a3daa..7311e169 100644 --- a/include/hci.h +++ b/include/hci.h @@ -142,7 +142,7 @@ enum { #define HCI_3EV5 0x0200 #define SCO_PTYPE_MASK (HCI_HV1 | HCI_HV2 | HCI_HV3) -#define ACL_PTYPE_MASK (HCI_DM1 | HCI_DH1 | HCI_DM3 | HCI_DH3 | HCI_DM5 | HCI_DM5) +#define ACL_PTYPE_MASK (HCI_DM1 | HCI_DH1 | HCI_DM3 | HCI_DH3 | HCI_DM5 | HCI_DH5) /* HCI Error codes */ #define HCI_UNKNOWN_COMMAND 0x01 -- cgit From 2b77e2e8198e16cae6d1411c4ec65bf87d6c4dd7 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Mon, 11 Apr 2005 14:37:24 +0000 Subject: Add inquiry info structure with RSSI and page scan mode --- include/hci.h | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 7311e169..3368121d 100644 --- a/include/hci.h +++ b/include/hci.h @@ -1039,6 +1039,16 @@ typedef struct { int8_t rssi; } __attribute__ ((packed)) inquiry_info_with_rssi; #define INQUIRY_INFO_WITH_RSSI_SIZE 14 +typedef struct { + bdaddr_t bdaddr; + uint8_t pscan_rep_mode; + uint8_t pscan_period_mode; + uint8_t pscan_mode; + uint8_t dev_class[3]; + uint16_t clock_offset; + int8_t rssi; +} __attribute__ ((packed)) inquiry_info_with_rssi_and_pscan_mode; +#define INQUIRY_INFO_WITH_RSSI_AND_PSCAN_MODE_SIZE 15 #define EVT_TESTING 0xFE -- cgit From 9ecc944c96728a92691e02db0f01e092df92bed8 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sun, 17 Apr 2005 20:35:47 +0000 Subject: Add definition for max slots change event --- include/hci.h | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 3368121d..7489c1c8 100644 --- a/include/hci.h +++ b/include/hci.h @@ -1007,6 +1007,13 @@ typedef struct { } __attribute__ ((packed)) evt_link_key_notify; #define EVT_LINK_KEY_NOTIFY_SIZE 23 +#define EVT_MAX_SLOTS_CHANGE 0x1B +typedef struct { + uint16_t handle; + uint8_t max_slots; +} __attribute__ ((packed)) evt_max_slots_change; +#define EVT_MAX_SLOTS_CHANGE_SIZE 3 + #define EVT_READ_CLOCK_OFFSET_COMPLETE 0x1C typedef struct { uint8_t status; -- cgit From c875d7ca57c3e5bad8c8af080c7d33f85a499c07 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sun, 17 Apr 2005 20:50:54 +0000 Subject: Add definition for page scan repetition mode change event --- include/hci.h | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 7489c1c8..5502e2b5 100644 --- a/include/hci.h +++ b/include/hci.h @@ -1036,6 +1036,13 @@ typedef struct { } __attribute__ ((packed)) evt_qos_violation; #define EVT_QOS_VIOLATION_SIZE 2 +#define EVT_PSCAN_REP_MODE_CHANGE 0x20 +typedef struct { + bdaddr_t bdaddr; + uint8_t pscan_rep_mode; +} __attribute__ ((packed)) evt_pscan_rep_mode_change; +#define EVT_PSCAN_REP_MODE_CHANGE_SIZE 7 + #define EVT_INQUIRY_RESULT_WITH_RSSI 0x22 typedef struct { bdaddr_t bdaddr; -- cgit From 01aab15cf710601c93457042507b433474a78c04 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sun, 17 Apr 2005 21:30:19 +0000 Subject: Add definition for remote extended features event --- include/hci.h | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 5502e2b5..3f811ffa 100644 --- a/include/hci.h +++ b/include/hci.h @@ -1064,6 +1064,16 @@ typedef struct { } __attribute__ ((packed)) inquiry_info_with_rssi_and_pscan_mode; #define INQUIRY_INFO_WITH_RSSI_AND_PSCAN_MODE_SIZE 15 +#define EVT_READ_REMOTE_EXT_FEATURES_COMPLETE 0x23 +typedef struct { + uint8_t status; + uint16_t handle; + uint8_t page_num; + uint8_t max_page_num; + uint8_t features[8]; +} __attribute__ ((packed)) evt_read_remote_ext_features_complete; +#define EVT_READ_REMOTE_EXT_FEATURES_COMPLETE_SIZE 13 + #define EVT_TESTING 0xFE #define EVT_VENDOR 0xFF -- cgit From 456c8fd652c0d96500adef3dd7abb067a000bc50 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sun, 17 Apr 2005 21:45:50 +0000 Subject: Add definitions for local extended features and commands --- include/hci.h | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 3f811ffa..fce19b9c 100644 --- a/include/hci.h +++ b/include/hci.h @@ -407,6 +407,13 @@ typedef struct { } __attribute__ ((packed)) read_remote_features_cp; #define READ_REMOTE_FEATURES_CP_SIZE 2 +#define OCF_READ_REMOTE_EXT_FEATURES 0x001C +typedef struct { + uint16_t handle; + uint8_t page_num; +} __attribute__ ((packed)) read_remote_ext_features_cp; +#define READ_REMOTE_EXT_FEATURES_CP_SIZE 3 + #define OCF_READ_REMOTE_VERSION 0x001D typedef struct { uint16_t handle; @@ -763,6 +770,13 @@ typedef struct { } __attribute__ ((packed)) read_local_version_rp; #define READ_LOCAL_VERSION_RP_SIZE 9 +#define OCF_READ_LOCAL_COMMANDS 0x0002 +typedef struct { + uint8_t status; + uint8_t commands[64]; +} __attribute__ ((packed)) read_local_commands_rp; +#define READ_LOCAL_COMMANDS_RP_SIZE 65 + #define OCF_READ_LOCAL_FEATURES 0x0003 typedef struct { uint8_t status; @@ -770,6 +784,15 @@ typedef struct { } __attribute__ ((packed)) read_local_features_rp; #define READ_LOCAL_FEATURES_RP_SIZE 9 +#define OCF_READ_LOCAL_EXT_FEATURES 0x0004 +typedef struct { + uint8_t status; + uint8_t page_num; + uint8_t max_page_num; + uint8_t features[8]; +} __attribute__ ((packed)) read_local_ext_features_rp; +#define READ_LOCAL_EXT_FEATURES_RP_SIZE 11 + #define OCF_READ_BUFFER_SIZE 0x0005 typedef struct { uint8_t status; -- cgit From d213d431b00c0ab451257e688dfad9fb20037088 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sun, 17 Apr 2005 22:34:04 +0000 Subject: Add definition for master link key command --- include/hci.h | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index fce19b9c..a0c85e74 100644 --- a/include/hci.h +++ b/include/hci.h @@ -386,6 +386,12 @@ typedef struct { } __attribute__ ((packed)) change_conn_link_key_cp; #define CHANGE_CONN_LINK_KEY_CP_SIZE 2 +#define OCF_MASTER_LINK_KEY 0x0017 +typedef struct { + uint8_t key_flag; +} __attribute__ ((packed)) master_link_key_cp; +#define MASTER_LINK_KEY_CP_SIZE 1 + #define OCF_REMOTE_NAME_REQ 0x0019 typedef struct { bdaddr_t bdaddr; @@ -785,6 +791,10 @@ typedef struct { #define READ_LOCAL_FEATURES_RP_SIZE 9 #define OCF_READ_LOCAL_EXT_FEATURES 0x0004 +typedef struct { + uint8_t page_num; +} __attribute__ ((packed)) read_local_ext_features_cp; +#define READ_LOCAL_EXT_FEATURES_CP_SIZE 1 typedef struct { uint8_t status; uint8_t page_num; -- cgit From 4582e03695aaf2f41e3d6341f9a49c383f103320 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sun, 17 Apr 2005 22:38:24 +0000 Subject: Add definition for master link key complete event --- include/hci.h | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index a0c85e74..f20a64b3 100644 --- a/include/hci.h +++ b/include/hci.h @@ -954,6 +954,14 @@ typedef struct { } __attribute__ ((packed)) evt_change_conn_link_key_complete; #define EVT_CHANGE_CONN_LINK_KEY_COMPLETE_SIZE 3 +#define EVT_MASTER_LINK_KEY_COMPLETE 0x0A +typedef struct { + uint8_t status; + uint16_t handle; + uint8_t key_flag; +} __attribute__ ((packed)) evt_master_link_key_complete; +#define EVT_MASTER_LINK_KEY_COMPLETE_SIZE 4 + #define EVT_READ_REMOTE_FEATURES_COMPLETE 0x0B typedef struct { uint8_t status; -- cgit From 8805ca9a84b178e5ae082c9a115ee55bbdae5263 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Mon, 18 Apr 2005 14:08:58 +0000 Subject: Add definitions for hardware error and flush occurred events --- include/hci.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index f20a64b3..aa0b7202 100644 --- a/include/hci.h +++ b/include/hci.h @@ -1004,6 +1004,18 @@ typedef struct { } __attribute__ ((packed)) evt_cmd_status; #define EVT_CMD_STATUS_SIZE 4 +#define EVT_HARDWARE_ERROR 0x10 +typedef struct { + uint8_t code; +} __attribute__ ((packed)) evt_hardware_error; +#define EVT_HARDWARE_ERROR_SIZE 1 + +#define EVT_FLUSH_OCCURRED 0x11 +typedef struct { + uint16_t handle; +} __attribute__ ((packed)) evt_flush_occured; +#define EVT_FLUSH_OCCURRED_SIZE 2 + #define EVT_ROLE_CHANGE 0x12 typedef struct { uint8_t status; -- cgit From b68e3ca7a1e5f3215bfc4408c86059ed4f76f2fd Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Mon, 18 Apr 2005 14:13:33 +0000 Subject: Add definition for return link keys event --- include/hci.h | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index aa0b7202..9da3172f 100644 --- a/include/hci.h +++ b/include/hci.h @@ -1040,6 +1040,13 @@ typedef struct { } __attribute__ ((packed)) evt_mode_change; #define EVT_MODE_CHANGE_SIZE 6 +#define EVT_RETURN_LINK_KEYS 0x15 +typedef struct { + uint8_t num_keys; + /* variable length part */ +} __attribute__ ((packed)) evt_return_link_keys; +#define EVT_RETURN_LINK_KEYS_SIZE 1 + #define EVT_PIN_CODE_REQ 0x16 typedef struct { bdaddr_t bdaddr; -- cgit From 845167a090206487c79d851d3989f5af188b708c Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Mon, 18 Apr 2005 14:31:11 +0000 Subject: Add definitions for loopback command and data overflow events --- include/hci.h | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 9da3172f..8c208303 100644 --- a/include/hci.h +++ b/include/hci.h @@ -1067,6 +1067,14 @@ typedef struct { } __attribute__ ((packed)) evt_link_key_notify; #define EVT_LINK_KEY_NOTIFY_SIZE 23 +#define EVT_LOOPBACK_COMMAND 0x19 + +#define EVT_DATA_BUFFER_OVERFLOW 0x1A +typedef struct { + uint8_t link_type; +} __attribute__ ((packed)) evt_data_buffer_overflow; +#define EVT_DATA_BUFFER_OVERFLOW_SIZE 1 + #define EVT_MAX_SLOTS_CHANGE 0x1B typedef struct { uint16_t handle; -- cgit From 788fef63f4ab0f7948726bbc4e442f4ede573285 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Mon, 18 Apr 2005 14:41:26 +0000 Subject: Add definition for flow specification complete event --- include/hci.h | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 8c208303..dfb866bd 100644 --- a/include/hci.h +++ b/include/hci.h @@ -1111,6 +1111,16 @@ typedef struct { } __attribute__ ((packed)) evt_pscan_rep_mode_change; #define EVT_PSCAN_REP_MODE_CHANGE_SIZE 7 +#define EVT_FLOW_SPEC_COMPLETE 0x21 +typedef struct { + uint8_t status; + uint16_t handle; + uint8_t flags; + uint8_t direction; + hci_qos qos; +} __attribute__ ((packed)) evt_flow_spec_complete; +#define EVT_FLOW_SPEC_COMPLETE_SIZE (5 + HCI_QOS_CP_SIZE) + #define EVT_INQUIRY_RESULT_WITH_RSSI 0x22 typedef struct { bdaddr_t bdaddr; -- cgit From ddcf94ef9f9f154b8263932a3c372894a61a2bff Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Mon, 18 Apr 2005 15:00:58 +0000 Subject: Add definitions for synchronous connection events --- include/hci.h | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index dfb866bd..af2e0dd1 100644 --- a/include/hci.h +++ b/include/hci.h @@ -1152,6 +1152,31 @@ typedef struct { } __attribute__ ((packed)) evt_read_remote_ext_features_complete; #define EVT_READ_REMOTE_EXT_FEATURES_COMPLETE_SIZE 13 +#define EVT_SYNC_CONN_COMPLETE 0x2C +typedef struct { + uint8_t status; + uint16_t handle; + bdaddr_t bdaddr; + uint8_t link_type; + uint8_t trans_interval; + uint8_t retrans_window; + uint16_t rx_pkt_len; + uint16_t tx_pkt_len; + uint8_t air_mode; +} __attribute__ ((packed)) evt_sync_conn_complete; +#define EVT_SYNC_CONN_COMPLETE_SIZE 17 + +#define EVT_SYNC_CONN_CHANGED 0x2D +typedef struct { + uint8_t status; + uint16_t handle; + uint8_t trans_interval; + uint8_t retrans_window; + uint16_t rx_pkt_len; + uint16_t tx_pkt_len; +} __attribute__ ((packed)) evt_sync_conn_changed; +#define EVT_SYNC_CONN_CHANGED_SIZE 9 + #define EVT_TESTING 0xFE #define EVT_VENDOR 0xFF -- cgit From fc64a954aa13eba73b3c24d20aac597576b0e840 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Mon, 18 Apr 2005 16:10:19 +0000 Subject: Add missing definitions for the link control commands --- include/hci.h | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index af2e0dd1..e13989ca 100644 --- a/include/hci.h +++ b/include/hci.h @@ -327,6 +327,12 @@ typedef struct { } __attribute__ ((packed)) add_sco_cp; #define ADD_SCO_CP_SIZE 4 +#define OCF_CREATE_CONN_CANCEL 0x0008 +typedef struct { + bdaddr_t bdaddr; +} __attribute__ ((packed)) create_conn_cancel_cp; +#define CREATE_CONN_CANCEL_CP_SIZE 6 + #define OCF_ACCEPT_CONN_REQ 0x0009 typedef struct { bdaddr_t bdaddr; @@ -432,6 +438,39 @@ typedef struct { } __attribute__ ((packed)) read_clock_offset_cp; #define READ_CLOCK_OFFSET_CP_SIZE 2 +#define OCF_READ_LMP_HANDLE 0x0020 + +#define OCF_SETUP_SYNC_CONN 0x0028 +typedef struct { + uint16_t handle; + uint32_t tx_bandwith; + uint32_t rx_bandwith; + uint16_t max_latency; + uint16_t voice_setting; + uint8_t retrans_effort; + uint16_t pkt_type; +} __attribute__ ((packed)) setup_sync_conn_cp; +#define SETUP_SYNC_CONN_CP_SIZE 17 + +#define OCF_ACCEPT_SYNC_CONN_REQ 0x0029 +typedef struct { + bdaddr_t bdaddr; + uint32_t tx_bandwith; + uint32_t rx_bandwith; + uint16_t max_latency; + uint16_t voice_setting; + uint8_t retrans_effort; + uint16_t pkt_type; +} __attribute__ ((packed)) accept_sync_conn_req_cp; +#define ACCEPT_SYNC_CONN_REQ_CP_SIZE 21 + +#define OCF_REJECT_SYNC_CONN_REQ 0x002A +typedef struct { + bdaddr_t bdaddr; + uint8_t reason; +} __attribute__ ((packed)) reject_sync_conn_req_cp; +#define REJECT_SYNC_CONN_REQ_CP_SIZE 7 + /* Link Policy */ #define OGF_LINK_POLICY 0x02 -- cgit From 18cd6ecb4eae48ffdcf6df2bbf5fd828459c6cec Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Wed, 27 Apr 2005 10:49:43 +0000 Subject: Include sys/socket.h in the header files --- include/hci.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index e13989ca..2a7fc786 100644 --- a/include/hci.h +++ b/include/hci.h @@ -35,6 +35,8 @@ extern "C" { #endif +#include + #define HCI_MAX_DEV 16 #define HCI_MAX_ACL_SIZE 1024 -- cgit From f51d996c92192762463e69b5b68e497258588508 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Wed, 27 Apr 2005 12:01:19 +0000 Subject: Add definitions for stored link keys --- include/hci.h | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 2a7fc786..b797cae6 100644 --- a/include/hci.h +++ b/include/hci.h @@ -598,6 +598,43 @@ typedef struct { #define CONN_SETUP_AUTO_OFF 0x01 #define CONN_SETUP_AUTO_ON 0x02 +#define OCF_READ_STORED_LINK_KEY 0x000D +typedef struct { + bdaddr_t bdaddr; + uint8_t read_all; +} __attribute__ ((packed)) read_stored_link_key_cp; +#define READ_STORED_LINK_KEY_CP_SIZE 7 +typedef struct { + uint8_t status; + uint16_t max_keys; + uint16_t num_keys; +} __attribute__ ((packed)) read_stored_link_key_rp; +#define READ_STORED_LINK_KEY_RP_SIZE 5 + +#define OCF_WRITE_STORED_LINK_KEY 0x0011 +typedef struct { + uint8_t num_keys; + /* variable length part */ +} __attribute__ ((packed)) write_stored_link_key_cp; +#define WRITE_STORED_LINK_KEY_CP_SIZE 1 +typedef struct { + uint8_t status; + uint8_t num_keys; +} __attribute__ ((packed)) write_stored_link_key_rp; +#define READ_WRITE_LINK_KEY_RP_SIZE 2 + +#define OCF_DELETE_STORED_LINK_KEY 0x0012 +typedef struct { + bdaddr_t bdaddr; + uint8_t delete_all; +} __attribute__ ((packed)) delete_stored_link_key_cp; +#define DELETE_STORED_LINK_KEY_CP_SIZE 7 +typedef struct { + uint8_t status; + uint16_t num_keys; +} __attribute__ ((packed)) delete_stored_link_key_rp; +#define DELETE_STORED_LINK_KEY_RP_SIZE 3 + #define OCF_CHANGE_LOCAL_NAME 0x0013 typedef struct { uint8_t name[248]; -- cgit From a28f053fed22e73e57c701d146983e1fcd0dcac3 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sun, 8 May 2005 12:24:54 +0000 Subject: Add definitions for reading/writing the PIN type and creating the unit key --- include/hci.h | 43 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 35 insertions(+), 8 deletions(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index b797cae6..86ffe8c9 100644 --- a/include/hci.h +++ b/include/hci.h @@ -576,6 +576,12 @@ typedef struct { /* Host Controller and Baseband */ #define OGF_HOST_CTL 0x03 +#define OCF_SET_EVENT_MASK 0x0001 +typedef struct { + uint8_t mask[8]; +} __attribute__ ((packed)) set_event_mask_cp; +#define SET_EVENT_MASK_CP_SIZE 8 + #define OCF_RESET 0x0003 #define OCF_SET_EVENT_FLT 0x0005 @@ -587,16 +593,37 @@ typedef struct { #define SET_EVENT_FLT_CP_SIZE 2 /* Filter types */ -#define FLT_CLEAR_ALL 0x00 -#define FLT_INQ_RESULT 0x01 -#define FLT_CONN_SETUP 0x02 +#define FLT_CLEAR_ALL 0x00 +#define FLT_INQ_RESULT 0x01 +#define FLT_CONN_SETUP 0x02 +/* INQ_RESULT Condition types */ +#define INQ_RESULT_RETURN_ALL 0x00 +#define INQ_RESULT_RETURN_CLASS 0x01 +#define INQ_RESULT_RETURN_BDADDR 0x02 /* CONN_SETUP Condition types */ -#define CONN_SETUP_ALLOW_ALL 0x00 -#define CONN_SETUP_ALLOW_CLASS 0x01 -#define CONN_SETUP_ALLOW_BDADDR 0x02 +#define CONN_SETUP_ALLOW_ALL 0x00 +#define CONN_SETUP_ALLOW_CLASS 0x01 +#define CONN_SETUP_ALLOW_BDADDR 0x02 /* CONN_SETUP Conditions */ -#define CONN_SETUP_AUTO_OFF 0x01 -#define CONN_SETUP_AUTO_ON 0x02 +#define CONN_SETUP_AUTO_OFF 0x01 +#define CONN_SETUP_AUTO_ON 0x02 + +#define OCF_FLUSH 0x0008 + +#define OCF_READ_PIN_TYPE 0x0009 +typedef struct { + uint8_t status; + uint8_t pin_type; +} __attribute__ ((packed)) read_pin_type_rp; +#define READ_PIN_TYPE_RP_SIZE 2 + +#define OCF_WRITE_PIN_TYPE 0x000A +typedef struct { + uint8_t pin_type; +} __attribute__ ((packed)) write_pin_type_cp; +#define WRITE_PIN_TYPE_CP_SIZE 1 + +#define OCF_CREATE_NEW_UNIT_KEY 0x000B #define OCF_READ_STORED_LINK_KEY 0x000D typedef struct { -- cgit From f38a7523b3e2ec2109cd5c5f65803da5a354da03 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Thu, 16 Jun 2005 13:53:08 +0000 Subject: Add support for reading and writing the inquiry scan type --- include/hci.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 86ffe8c9..b6275196 100644 --- a/include/hci.h +++ b/include/hci.h @@ -833,6 +833,23 @@ typedef struct { } __attribute__ ((packed)) set_afh_classification_rp; #define SET_AFH_CLASSIFICATION_RP_SIZE 1 +#define OCF_READ_INQUIRY_SCAN_TYPE 0x0042 +typedef struct { + uint8_t status; + uint8_t type; +} __attribute__ ((packed)) read_inquiry_scan_type_rp; +#define READ_INQUIRY_SCAN_TYPE_RP_SIZE 2 + +#define OCF_WRITE_INQUIRY_SCAN_TYPE 0x0043 +typedef struct { + uint8_t type; +} __attribute__ ((packed)) write_inquiry_scan_type_cp; +#define WRITE_INQUIRY_SCAN_TYPE_CP_SIZE 1 +typedef struct { + uint8_t status; +} __attribute__ ((packed)) write_inquiry_scan_type_rp; +#define WRITE_INQUIRY_SCAN_TYPE_RP_SIZE 1 + #define OCF_READ_INQUIRY_MODE 0x0044 typedef struct { uint8_t status; -- cgit From ef13270022a9ac069ef907f36feee499c682356b Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Fri, 17 Jun 2005 11:48:17 +0000 Subject: Add definitions for connection accept timeout and scan enable --- include/hci.h | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index b6275196..29518dbb 100644 --- a/include/hci.h +++ b/include/hci.h @@ -675,8 +675,18 @@ typedef struct { } __attribute__ ((packed)) read_local_name_rp; #define READ_LOCAL_NAME_RP_SIZE 249 -#define OCF_WRITE_CA_TIMEOUT 0x0016 -#define OCF_WRITE_PG_TIMEOUT 0x0018 +#define OCF_READ_CONN_ACCEPT_TIMEOUT 0x0015 +typedef struct { + uint8_t status; + uint16_t timeout; +} __attribute__ ((packed)) read_conn_accept_timeout_rp; +#define READ_CONN_ACCEPT_TIMEOUT_RP_SIZE 3 + +#define OCF_WRITE_CONN_ACCEPT_TIMEOUT 0x0016 +typedef struct { + uint16_t timeout; +} __attribute__ ((packed)) write_conn_accept_timeout_cp; +#define WRITE_CONN_ACCEPT_TIMEOUT_CP_SIZE 2 #define OCF_READ_PAGE_TIMEOUT 0x0017 typedef struct { @@ -691,6 +701,13 @@ typedef struct { } __attribute__ ((packed)) write_page_timeout_cp; #define WRITE_PAGE_TIMEOUT_CP_SIZE 2 +#define OCF_READ_SCAN_ENABLE 0x0019 +typedef struct { + uint8_t status; + uint8_t enable; +} __attribute__ ((packed)) read_scan_enable_rp; +#define READ_SCAN_ENABLE_RP_SIZE 2 + #define OCF_WRITE_SCAN_ENABLE 0x001A #define SCAN_DISABLED 0x00 #define SCAN_INQUIRY 0x01 -- cgit From 049d8b7167e88eb376a7173188eb09a5d6b19b41 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sat, 6 Aug 2005 08:08:42 +0000 Subject: Add HCI message header --- include/hci.h | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 29518dbb..c9de094d 100644 --- a/include/hci.h +++ b/include/hci.h @@ -1370,6 +1370,13 @@ typedef struct { } __attribute__ ((packed)) hci_sco_hdr; #define HCI_SCO_HDR_SIZE 3 +typedef struct { + uint16_t device; + uint16_t type; + uint16_t plen; +} __attribute__ ((packed)) hci_msg_hdr; +#define HCI_MSG_HDR_SIZE 6 + /* Command opcode pack/unpack */ #define cmd_opcode_pack(ogf, ocf) (uint16_t)((ocf & 0x03ff)|(ogf << 10)) #define cmd_opcode_ogf(op) (op >> 10) -- cgit From 44f113d701858c5c502b30873b5a0375140eb211 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Tue, 16 Aug 2005 21:22:47 +0000 Subject: Add extended inquiry definitions --- include/hci.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index c9de094d..3b977033 100644 --- a/include/hci.h +++ b/include/hci.h @@ -901,6 +901,25 @@ typedef struct { } __attribute__ ((packed)) write_afh_mode_rp; #define WRITE_AFH_MODE_RP_SIZE 1 +#define OCF_READ_EXT_INQUIRY_RESPONSE 0x0051 +typedef struct { + uint8_t status; + uint8_t fec; + uint8_t data[240]; +} __attribute__ ((packed)) read_ext_inquiry_response_rp; +#define READ_EXT_INQUIRY_RESPONSE_RP_SIZE 242 + +#define OCF_WRITE_EXT_INQUIRY_RESPONSE 0x0052 +typedef struct { + uint8_t fec; + uint8_t data[240]; +} __attribute__ ((packed)) write_ext_inquiry_response_cp; +#define WRITE_EXT_INQUIRY_RESPONSE_CP_SIZE 241 +typedef struct { + uint8_t status; +} __attribute__ ((packed)) write_ext_inquiry_response_rp; +#define WRITE_EXT_INQUIRY_RESPONSE_RP_SIZE 1 + /* Informational Parameters */ #define OGF_INFO_PARAM 0x04 @@ -1316,6 +1335,18 @@ typedef struct { } __attribute__ ((packed)) evt_sync_conn_changed; #define EVT_SYNC_CONN_CHANGED_SIZE 9 +#define EVT_EXTENDED_INQUIRY_RESULT 0x2F +typedef struct { + bdaddr_t bdaddr; + uint8_t pscan_rep_mode; + uint8_t pscan_period_mode; + uint8_t dev_class[3]; + uint16_t clock_offset; + int8_t rssi; + uint8_t data[240]; +} __attribute__ ((packed)) extended_inquiry_info; +#define EXTENDED_INQUIRY_INFO 254 + #define EVT_TESTING 0xFE #define EVT_VENDOR 0xFF -- cgit From 250f3d42abeb25d8b08638130d5f4674af6168c6 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Wed, 24 Aug 2005 23:08:00 +0000 Subject: Fix extended inquiry info structure size --- include/hci.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 3b977033..b7df747a 100644 --- a/include/hci.h +++ b/include/hci.h @@ -1345,7 +1345,7 @@ typedef struct { int8_t rssi; uint8_t data[240]; } __attribute__ ((packed)) extended_inquiry_info; -#define EXTENDED_INQUIRY_INFO 254 +#define EXTENDED_INQUIRY_INFO_SIZE 254 #define EVT_TESTING 0xFE -- cgit From f50545eae585ba4b3eac5d8764827342ae214843 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sat, 27 Aug 2005 10:53:49 +0000 Subject: Add extended inquiry features bit --- include/hci.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index b7df747a..243889d3 100644 --- a/include/hci.h +++ b/include/hci.h @@ -254,6 +254,8 @@ enum { #define LMP_EDR_ESCO_3M 0x40 #define LMP_EDR_3S_ESCO 0x80 +#define LMP_EXT_INQ 0x01 + #define LMP_EXT_FEAT 0x80 /* Link policies */ -- cgit From 19f7dc5517f6c598d9e351ec28fad811e0f0ee59 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Thu, 8 Sep 2005 11:50:20 +0000 Subject: Add missing OCF declarations for the security filter --- include/hci.h | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 243889d3..d12232d8 100644 --- a/include/hci.h +++ b/include/hci.h @@ -575,6 +575,10 @@ typedef struct { } __attribute__ ((packed)) write_link_policy_rp; #define WRITE_LINK_POLICY_RP_SIZE 3 +#define OCF_READ_DEFAULT_LINK_POLICY 0x000E + +#define OCF_WRITE_DEFAULT_LINK_POLICY 0x000F + /* Host Controller and Baseband */ #define OGF_HOST_CTL 0x03 @@ -784,6 +788,18 @@ typedef struct { } __attribute__ ((packed)) write_voice_setting_cp; #define WRITE_VOICE_SETTING_CP_SIZE 2 +#define OCF_READ_AUTOMATIC_FLUSH_TIMEOUT 0x0027 + +#define OCF_WRITE_AUTOMATIC_FLUSH_TIMEOUT 0x0028 + +#define OCF_READ_NUM_BROADCAST_RETRANS 0x0029 + +#define OCF_WRITE_NUM_BROADCAST_RETRANS 0x002A + +#define OCF_READ_HOLD_MODE_ACTIVITY 0x002B + +#define OCF_WRITE_HOLD_MODE_ACTIVITY 0x002C + #define OCF_READ_TRANSMIT_POWER_LEVEL 0x002D typedef struct { uint16_t handle; @@ -826,6 +842,8 @@ typedef struct { } __attribute__ ((packed)) write_link_supervision_timeout_rp; #define WRITE_LINK_SUPERVISION_TIMEOUT_RP_SIZE 3 +#define OCF_READ_NUM_SUPPORTED_IAC 0x0038 + #define MAX_IAC_LAP 0x40 #define OCF_READ_CURRENT_IAC_LAP 0x0039 typedef struct { @@ -842,6 +860,14 @@ typedef struct { } __attribute__ ((packed)) write_current_iac_lap_cp; #define WRITE_CURRENT_IAC_LAP_CP_SIZE 1+3*MAX_IAC_LAP +#define OCF_READ_PAGE_SCAN_PERIOD_MODE 0x003B + +#define OCF_WRITE_PAGE_SCAN_PERIOD_MODE 0x003C + +#define OCF_READ_PAGE_SCAN_MODE 0x003D + +#define OCF_WRITE_PAGE_SCAN_MODE 0x003E + #define OCF_SET_AFH_CLASSIFICATION 0x003F typedef struct { uint8_t map[10]; @@ -886,6 +912,10 @@ typedef struct { } __attribute__ ((packed)) write_inquiry_mode_rp; #define WRITE_INQUIRY_MODE_RP_SIZE 1 +#define OCF_READ_PAGE_SCAN_TYPE 0x0046 + +#define OCF_WRITE_PAGE_SCAN_TYPE 0x0047 + #define OCF_READ_AFH_MODE 0x0048 typedef struct { uint8_t status; @@ -973,6 +1003,8 @@ typedef struct { } __attribute__ ((packed)) read_buffer_size_rp; #define READ_BUFFER_SIZE_RP_SIZE 8 +#define OCF_READ_COUNTRY_CODE 0x0007 + #define OCF_READ_BD_ADDR 0x0009 typedef struct { uint8_t status; -- cgit From c0d524486a50e8366c12c5ebea1a4441e9db46aa Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sat, 29 Oct 2005 19:25:42 +0000 Subject: Big cleanup of CVS relics --- include/hci.h | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index d12232d8..0ddebd82 100644 --- a/include/hci.h +++ b/include/hci.h @@ -8,24 +8,19 @@ * * * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation; + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY - * CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. * - * ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, - * COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS - * SOFTWARE IS DISCLAIMED. + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * - * - * $Id$ */ #ifndef __HCI_H -- cgit From 7575a227c3ad282247c288fa8def69d9dcd7603f Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Mon, 21 Nov 2005 10:26:56 +0000 Subject: Add constants for sniff subrating --- include/hci.h | 1 + 1 file changed, 1 insertion(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 0ddebd82..e1790cce 100644 --- a/include/hci.h +++ b/include/hci.h @@ -243,6 +243,7 @@ enum { #define LMP_EDR_3SLOT 0x80 #define LMP_EDR_5SLOT 0x01 +#define LMP_SNIFF_SUBR 0x02 #define LMP_AFH_CAP_MST 0x08 #define LMP_AFH_CLS_MST 0x10 #define LMP_EDR_ESCO_2M 0x20 -- cgit From 232851e1acd3dddc763f1661d67a3c0256363366 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Wed, 23 Nov 2005 21:26:03 +0000 Subject: Add definitions for sniff subrate --- include/hci.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index e1790cce..ec79bf3b 100644 --- a/include/hci.h +++ b/include/hci.h @@ -575,6 +575,16 @@ typedef struct { #define OCF_WRITE_DEFAULT_LINK_POLICY 0x000F +#define OCF_SNIFF_SUBRATE 0x0011 +typedef struct { + uint16_t handle; + uint16_t max_remote_latency; + uint16_t max_local_latency; + uint16_t min_remote_timeout; + uint16_t min_local_timeout; +} __attribute__ ((packed)) sniff_subrate_cp; +#define SNIFF_SUBRATE_CP_SIZE 10 + /* Host Controller and Baseband */ #define OGF_HOST_CTL 0x03 @@ -1365,6 +1375,17 @@ typedef struct { } __attribute__ ((packed)) evt_sync_conn_changed; #define EVT_SYNC_CONN_CHANGED_SIZE 9 +#define EVT_SNIFF_SUBRATE 0x2E +typedef struct { + uint8_t status; + uint16_t handle; + uint16_t max_remote_latency; + uint16_t max_local_latency; + uint16_t min_remote_timeout; + uint16_t min_local_timeout; +} __attribute__ ((packed)) evt_sniff_subrate; +#define EVT_SNIFF_SUBRATE_SIZE 11 + #define EVT_EXTENDED_INQUIRY_RESULT 0x2F typedef struct { bdaddr_t bdaddr; -- cgit From 197a2aee34d9a1643cd474f8f167552ca6395d01 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Tue, 3 Jan 2006 12:56:09 +0000 Subject: Update copyright information --- include/hci.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index ec79bf3b..0547f568 100644 --- a/include/hci.h +++ b/include/hci.h @@ -4,7 +4,7 @@ * * Copyright (C) 2000-2001 Qualcomm Incorporated * Copyright (C) 2002-2003 Maxim Krasnyansky - * Copyright (C) 2002-2005 Marcel Holtmann + * Copyright (C) 2002-2006 Marcel Holtmann * * * This program is free software; you can redistribute it and/or modify -- cgit From 1ba3b0978c73153513cfe016435e1e930038fbd4 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Tue, 7 Feb 2006 07:48:11 +0000 Subject: Add features bit for pause encryption --- include/hci.h | 1 + 1 file changed, 1 insertion(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 0547f568..312fa27d 100644 --- a/include/hci.h +++ b/include/hci.h @@ -244,6 +244,7 @@ enum { #define LMP_EDR_5SLOT 0x01 #define LMP_SNIFF_SUBR 0x02 +#define LMP_PAUSE_ENC 0x04 #define LMP_AFH_CAP_MST 0x08 #define LMP_AFH_CLS_MST 0x10 #define LMP_EDR_ESCO_2M 0x20 -- cgit From 630e9b79dee2c26759fb8650444cb113714bba0d Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Wed, 12 Apr 2006 09:23:00 +0000 Subject: Add additional EIR error code --- include/hci.h | 1 + 1 file changed, 1 insertion(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 312fa27d..435ea6a1 100644 --- a/include/hci.h +++ b/include/hci.h @@ -192,6 +192,7 @@ enum { #define HCI_ROLE_SWITCH_PENDING 0x32 #define HCI_SLOT_VIOLATION 0x34 #define HCI_ROLE_SWITCH_FAILED 0x35 +#define HCI_EIR_TOO_LARGE 0x36 /* ACL flags */ #define ACL_CONT 0x01 -- cgit From 26167e5ea69ab1707a94e1c262ac58711cbd6a9a Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Wed, 31 May 2006 15:17:07 +0000 Subject: Update sniff subrating data structures --- include/hci.h | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 435ea6a1..117328d8 100644 --- a/include/hci.h +++ b/include/hci.h @@ -580,8 +580,7 @@ typedef struct { #define OCF_SNIFF_SUBRATE 0x0011 typedef struct { uint16_t handle; - uint16_t max_remote_latency; - uint16_t max_local_latency; + uint16_t max_latency; uint16_t min_remote_timeout; uint16_t min_local_timeout; } __attribute__ ((packed)) sniff_subrate_cp; @@ -1381,8 +1380,8 @@ typedef struct { typedef struct { uint8_t status; uint16_t handle; - uint16_t max_remote_latency; - uint16_t max_local_latency; + uint16_t max_tx_latency; + uint16_t max_rx_latency; uint16_t min_remote_timeout; uint16_t min_local_timeout; } __attribute__ ((packed)) evt_sniff_subrate; -- cgit From 3fcf56f2a27bcd08dfecbdbe65820e385491ed42 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Wed, 31 May 2006 15:42:39 +0000 Subject: Fix sniff subrate command size --- include/hci.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 117328d8..becbbb06 100644 --- a/include/hci.h +++ b/include/hci.h @@ -584,7 +584,7 @@ typedef struct { uint16_t min_remote_timeout; uint16_t min_local_timeout; } __attribute__ ((packed)) sniff_subrate_cp; -#define SNIFF_SUBRATE_CP_SIZE 10 +#define SNIFF_SUBRATE_CP_SIZE 8 /* Host Controller and Baseband */ #define OGF_HOST_CTL 0x03 -- cgit From 39519245f25c517424d1f2ccbed07777c8e060fa Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sat, 8 Jul 2006 11:45:21 +0000 Subject: Add adapter type for SDIO --- include/hci.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index becbbb06..4cd8c7d9 100644 --- a/include/hci.h +++ b/include/hci.h @@ -48,12 +48,13 @@ extern "C" { #define HCI_DEV_RESUME 6 /* HCI device types */ -#define HCI_VHCI 0 +#define HCI_VIRTUAL 0 #define HCI_USB 1 #define HCI_PCCARD 2 #define HCI_UART 3 #define HCI_RS232 4 #define HCI_PCI 5 +#define HCI_SDIO 6 /* HCI device flags */ enum { -- cgit From 57834785d5445439c2abbc19903566f050bc98a2 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Thu, 27 Jul 2006 01:23:04 +0000 Subject: Add features bit for link supervision timeout --- include/hci.h | 1 + 1 file changed, 1 insertion(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 4cd8c7d9..65480140 100644 --- a/include/hci.h +++ b/include/hci.h @@ -255,6 +255,7 @@ enum { #define LMP_EXT_INQ 0x01 +#define LMP_LSTO 0x01 #define LMP_EXT_FEAT 0x80 /* Link policies */ -- cgit From 646fda930139720d7d9c45cc085ae4eb7018d8bb Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Mon, 31 Jul 2006 09:56:18 +0000 Subject: Add link supervision timeout change event --- include/hci.h | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 65480140..329f2b3a 100644 --- a/include/hci.h +++ b/include/hci.h @@ -835,14 +835,14 @@ typedef struct { typedef struct { uint8_t status; uint16_t handle; - uint16_t link_sup_to; + uint16_t timeout; } __attribute__ ((packed)) read_link_supervision_timeout_rp; #define READ_LINK_SUPERVISION_TIMEOUT_RP_SIZE 5 #define OCF_WRITE_LINK_SUPERVISION_TIMEOUT 0x0037 typedef struct { uint16_t handle; - uint16_t link_sup_to; + uint16_t timeout; } __attribute__ ((packed)) write_link_supervision_timeout_cp; #define WRITE_LINK_SUPERVISION_TIMEOUT_CP_SIZE 4 typedef struct { @@ -1401,6 +1401,13 @@ typedef struct { } __attribute__ ((packed)) extended_inquiry_info; #define EXTENDED_INQUIRY_INFO_SIZE 254 +#define EVT_LINK_SUPERVISION_TIMEOUT 0x38 +typedef struct { + uint16_t handle; + uint16_t timeout; +} __attribute__ ((packed)) evt_link_supervision_timeout; +#define EVT_LINK_SUPERVISION_TIMEOUT_SIZE 4 + #define EVT_TESTING 0xFE #define EVT_VENDOR 0xFF -- cgit From 914617b58d2b68d1e3792a77fc5dd37f78d2037b Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Mon, 31 Jul 2006 10:00:10 +0000 Subject: Remove kernel specific timeouts --- include/hci.h | 6 ------ 1 file changed, 6 deletions(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 329f2b3a..bccaf918 100644 --- a/include/hci.h +++ b/include/hci.h @@ -98,12 +98,6 @@ enum { #define HCIINQUIRY _IOR('H', 240, int) -/* HCI timeouts */ - -#define HCI_CONN_TIMEOUT (HZ * 40) -#define HCI_DISCONN_TIMEOUT (HZ * 2) -#define HCI_CONN_IDLE_TIMEOUT (HZ * 60) - #ifndef __NO_HCI_DEFS /* HCI Packet types */ -- cgit From d57d189c75ba7ee813d943d228f6311fca00c5ce Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sun, 20 Aug 2006 22:33:07 +0000 Subject: Rename link supervision timeout event --- include/hci.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index bccaf918..6f67bbdf 100644 --- a/include/hci.h +++ b/include/hci.h @@ -1395,11 +1395,11 @@ typedef struct { } __attribute__ ((packed)) extended_inquiry_info; #define EXTENDED_INQUIRY_INFO_SIZE 254 -#define EVT_LINK_SUPERVISION_TIMEOUT 0x38 +#define EVT_LINK_SUPERVISION_TIMEOUT_CHANGE 0x38 typedef struct { uint16_t handle; uint16_t timeout; -} __attribute__ ((packed)) evt_link_supervision_timeout; +} __attribute__ ((packed)) evt_link_supervision_timeout_change; #define EVT_LINK_SUPERVISION_TIMEOUT_SIZE 4 #define EVT_TESTING 0xFE -- cgit From 99d09d338d4ab207b2d559d3516d9a642d1a5d30 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Mon, 21 Aug 2006 12:36:49 +0000 Subject: Add OCF for setting host controller to host flow control --- include/hci.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 6f67bbdf..ee25858e 100644 --- a/include/hci.h +++ b/include/hci.h @@ -816,6 +816,8 @@ typedef struct { } __attribute__ ((packed)) read_transmit_power_level_rp; #define READ_TRANSMIT_POWER_LEVEL_RP_SIZE 4 +#define OCF_SET_CONTROLLER_TO_HOST_FC 0x0031 + #define OCF_HOST_BUFFER_SIZE 0x0033 typedef struct { uint16_t acl_mtu; -- cgit From 0f9595e9d94cc878d159f1f63b377b839aaa1dca Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Mon, 21 Aug 2006 12:46:43 +0000 Subject: Add OCF for host number of completed packets --- include/hci.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index ee25858e..6cfef5c1 100644 --- a/include/hci.h +++ b/include/hci.h @@ -827,6 +827,8 @@ typedef struct { } __attribute__ ((packed)) host_buffer_size_cp; #define HOST_BUFFER_SIZE_CP_SIZE 7 +#define OCF_HOST_NUM_COMP_PKTS 0x0035 + #define OCF_READ_LINK_SUPERVISION_TIMEOUT 0x0036 typedef struct { uint8_t status; -- cgit From 6789dbbbe34d1c66b0338da061fa5cb877d04163 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Mon, 21 Aug 2006 12:56:10 +0000 Subject: Add structure for host number of completed packets --- include/hci.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 6cfef5c1..0454f96e 100644 --- a/include/hci.h +++ b/include/hci.h @@ -828,6 +828,11 @@ typedef struct { #define HOST_BUFFER_SIZE_CP_SIZE 7 #define OCF_HOST_NUM_COMP_PKTS 0x0035 +typedef struct { + uint8_t num_hndl; + /* variable length part */ +} __attribute__ ((packed)) host_num_comp_pkts_cp; +#define HOST_NUM_COMP_PKTS_CP_SIZE 1 #define OCF_READ_LINK_SUPERVISION_TIMEOUT 0x0036 typedef struct { -- cgit From 25effaf3a661c4de960ebae7125ba56a990ad628 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sat, 13 Jan 2007 17:50:06 +0000 Subject: Update copyright information --- include/hci.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 0454f96e..46f97bb7 100644 --- a/include/hci.h +++ b/include/hci.h @@ -4,7 +4,7 @@ * * Copyright (C) 2000-2001 Qualcomm Incorporated * Copyright (C) 2002-2003 Maxim Krasnyansky - * Copyright (C) 2002-2006 Marcel Holtmann + * Copyright (C) 2002-2007 Marcel Holtmann * * * This program is free software; you can redistribute it and/or modify -- cgit From 1613675da92e96b4074c381965eb536b7184e8d7 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Fri, 27 Apr 2007 16:09:46 +0000 Subject: Add ESCO_LINK connection type constant --- include/hci.h | 1 + 1 file changed, 1 insertion(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 46f97bb7..eb015fc7 100644 --- a/include/hci.h +++ b/include/hci.h @@ -198,6 +198,7 @@ enum { /* Baseband links */ #define SCO_LINK 0x00 #define ACL_LINK 0x01 +#define ESCO_LINK 0x02 /* LMP features */ #define LMP_3SLOT 0x01 -- cgit From 34c5828e678e244a28b7c3ba7078a08583273aa3 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sat, 16 Jun 2007 11:46:22 +0000 Subject: Add definitions for inquiry power level and erroneous data --- include/hci.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index eb015fc7..327d17a4 100644 --- a/include/hci.h +++ b/include/hci.h @@ -249,8 +249,11 @@ enum { #define LMP_EDR_3S_ESCO 0x80 #define LMP_EXT_INQ 0x01 +#define LMP_ERR_DAT_REP 0x20 +#define LMP_NFLUSH_PKTS 0x40 #define LMP_LSTO 0x01 +#define LMP_INQ_TX_PWR 0x02 #define LMP_EXT_FEAT 0x80 /* Link policies */ -- cgit From e37574cc50749ebaaf19bc4480905b81c589b93e Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Fri, 22 Jun 2007 17:05:41 +0000 Subject: Add mising HCI event structures --- include/hci.h | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 327d17a4..a32ccdee 100644 --- a/include/hci.h +++ b/include/hci.h @@ -1385,7 +1385,7 @@ typedef struct { } __attribute__ ((packed)) evt_sync_conn_changed; #define EVT_SYNC_CONN_CHANGED_SIZE 9 -#define EVT_SNIFF_SUBRATE 0x2E +#define EVT_SNIFF_SUBRATING 0x2E typedef struct { uint8_t status; uint16_t handle; @@ -1393,8 +1393,8 @@ typedef struct { uint16_t max_rx_latency; uint16_t min_remote_timeout; uint16_t min_local_timeout; -} __attribute__ ((packed)) evt_sniff_subrate; -#define EVT_SNIFF_SUBRATE_SIZE 11 +} __attribute__ ((packed)) evt_sniff_subrating; +#define EVT_SNIFF_SUBRATING_SIZE 11 #define EVT_EXTENDED_INQUIRY_RESULT 0x2F typedef struct { @@ -1408,12 +1408,32 @@ typedef struct { } __attribute__ ((packed)) extended_inquiry_info; #define EXTENDED_INQUIRY_INFO_SIZE 254 -#define EVT_LINK_SUPERVISION_TIMEOUT_CHANGE 0x38 +#define EVT_ENCRYPTION_KEY_REFRESH_COMPLETE 0x30 +typedef struct { + uint8_t status; + uint16_t handle; +} __attribute__ ((packed)) evt_encryption_key_refresh_complete; +#define EVT_ENCRYPTION_KEY_REFRESH_COMPLETE_SIZE 3 + +#define EVT_LINK_SUPERVISION_TIMEOUT_CHANGED 0x38 typedef struct { uint16_t handle; uint16_t timeout; -} __attribute__ ((packed)) evt_link_supervision_timeout_change; -#define EVT_LINK_SUPERVISION_TIMEOUT_SIZE 4 +} __attribute__ ((packed)) evt_link_supervision_timeout_changed; +#define EVT_LINK_SUPERVISION_TIMEOUT_CHANGED_SIZE 4 + +#define EVT_ENHANCED_FLUSH_COMPLETE 0x39 +typedef struct { + uint16_t handle; +} __attribute__ ((packed)) evt_enhanced_flush_complete; +#define EVT_ENHANCED_FLUSH_COMPLETE_SIZE 2 + +#define EVT_REMOTE_HOST_FEATURES_NOTIFY 0x3D +typedef struct { + bdaddr_t bdaddr; + uint8_t features[8]; +} __attribute__ ((packed)) evt_remote_host_features_notify; +#define EVT_REMOTE_HOST_FEATURES_NOTIFY_SIZE 14 #define EVT_TESTING 0xFE -- cgit From 668600a6e16d3d84b4d256c5ed44491d6301ec4a Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Fri, 22 Jun 2007 17:41:53 +0000 Subject: Add mising HCI commands structures --- include/hci.h | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 54 insertions(+), 3 deletions(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index a32ccdee..906bbb4b 100644 --- a/include/hci.h +++ b/include/hci.h @@ -577,14 +577,14 @@ typedef struct { #define OCF_WRITE_DEFAULT_LINK_POLICY 0x000F -#define OCF_SNIFF_SUBRATE 0x0011 +#define OCF_SNIFF_SUBRATING 0x0011 typedef struct { uint16_t handle; uint16_t max_latency; uint16_t min_remote_timeout; uint16_t min_local_timeout; -} __attribute__ ((packed)) sniff_subrate_cp; -#define SNIFF_SUBRATE_CP_SIZE 8 +} __attribute__ ((packed)) sniff_subrating_cp; +#define SNIFF_SUBRATING_CP_SIZE 8 /* Host Controller and Baseband */ #define OGF_HOST_CTL 0x03 @@ -968,6 +968,57 @@ typedef struct { } __attribute__ ((packed)) write_ext_inquiry_response_rp; #define WRITE_EXT_INQUIRY_RESPONSE_RP_SIZE 1 +#define OCF_REFRESH_ENCRYPTION_KEY 0x0053 +typedef struct { + uint16_t handle; +} __attribute__ ((packed)) refresh_encryption_key_cp; +#define REFRESH_ENCRYPTION_KEY_CP_SIZE 2 +typedef struct { + uint8_t status; +} __attribute__ ((packed)) refresh_encryption_key_rp; +#define REFRESH_ENCRYPTION_KEY_RP_SIZE 1 + +#define OCF_READ_INQUIRY_TRANSMIT_POWER_LEVEL 0x0058 +typedef struct { + uint8_t status; + int8_t level; +} __attribute__ ((packed)) read_inquiry_transmit_power_level_rp; +#define READ_INQUIRY_TRANSMIT_POWER_LEVEL_RP_SIZE 2 + +#define OCF_WRITE_INQUIRY_TRANSMIT_POWER_LEVEL 0x0059 +typedef struct { + int8_t level; +} __attribute__ ((packed)) write_inquiry_transmit_power_level_cp; +#define WRITE_INQUIRY_TRANSMIT_POWER_LEVEL_CP_SIZE 1 +typedef struct { + uint8_t status; +} __attribute__ ((packed)) write_inquiry_transmit_power_level_rp; +#define WRITE_INQUIRY_TRANSMIT_POWER_LEVEL_RP_SIZE 1 + +#define OCF_READ_DEFAULT_ERROR_DATA_REPORTING 0x005A +typedef struct { + uint8_t status; + uint8_t reporting; +} __attribute__ ((packed)) read_default_error_data_reporting_rp; +#define READ_DEFAULT_ERROR_DATA_REPORTING_RP_SIZE 2 + +#define OCF_WRITE_DEFAULT_ERROR_DATA_REPORTING 0x005B +typedef struct { + uint8_t reporting; +} __attribute__ ((packed)) write_default_error_data_reporting_cp; +#define WRITE_DEFAULT_ERROR_DATA_REPORTING_CP_SIZE 1 +typedef struct { + uint8_t status; +} __attribute__ ((packed)) write_default_error_data_reporting_rp; +#define WRITE_DEFAULT_ERROR_DATA_REPORTING_RP_SIZE 1 + +#define OCF_ENHANCED_FLUSH 0x005F +typedef struct { + uint16_t handle; + uint8_t type; +} __attribute__ ((packed)) enhanced_flush_cp; +#define ENHANCED_FLUSH_CP_SIZE 3 + /* Informational Parameters */ #define OGF_INFO_PARAM 0x04 -- cgit From 08b3ddeeff510f9ac61c860a74d13575a47420b7 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Thu, 26 Jul 2007 08:25:50 +0000 Subject: Update HCI command table --- include/hci.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 906bbb4b..eaab3964 100644 --- a/include/hci.h +++ b/include/hci.h @@ -577,6 +577,8 @@ typedef struct { #define OCF_WRITE_DEFAULT_LINK_POLICY 0x000F +#define OCF_FLOW_SPECIFICATION 0x0010 + #define OCF_SNIFF_SUBRATING 0x0011 typedef struct { uint16_t handle; -- cgit From a3cc218cd5f213922cd529ebfb5da5ba1b1f1aca Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Wed, 1 Aug 2007 07:29:23 +0000 Subject: Add definitions and functions for Simple Pairing --- include/hci.h | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 154 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index eaab3964..a4f88146 100644 --- a/include/hci.h +++ b/include/hci.h @@ -188,6 +188,8 @@ enum { #define HCI_SLOT_VIOLATION 0x34 #define HCI_ROLE_SWITCH_FAILED 0x35 #define HCI_EIR_TOO_LARGE 0x36 +#define HCI_SIMPLE_PAIRING_NOT_SUPPORTED 0x37 +#define HCI_HOST_BUSY_PAIRING 0x38 /* ACL flags */ #define ACL_CONT 0x01 @@ -249,6 +251,8 @@ enum { #define LMP_EDR_3S_ESCO 0x80 #define LMP_EXT_INQ 0x01 +#define LMP_SIMPLE_PAIR 0x08 +#define LMP_ENCAPS_PDU 0x10 #define LMP_ERR_DAT_REP 0x20 #define LMP_NFLUSH_PKTS 0x40 @@ -473,6 +477,49 @@ typedef struct { } __attribute__ ((packed)) reject_sync_conn_req_cp; #define REJECT_SYNC_CONN_REQ_CP_SIZE 7 +#define OCF_IO_CAPABILITY_REPLY 0x002B +typedef struct { + bdaddr_t bdaddr; + uint8_t capability; + uint8_t oob_data; + uint8_t authentication; +} __attribute__ ((packed)) io_capability_reply_cp; +#define IO_CAPABILITY_REPLY_CP_SIZE 9 + +#define OCF_USER_CONFIRM_REPLY 0x002C +typedef struct { + bdaddr_t bdaddr; +} __attribute__ ((packed)) user_confirm_reply_cp; +#define USER_CONFIRM_REPLY_CP_SIZE 6 + +#define OCF_USER_CONFIRM_NEG_REPLY 0x002D + +#define OCF_USER_PASSKEY_REPLY 0x002E +typedef struct { + bdaddr_t bdaddr; + uint32_t passkey; +} __attribute__ ((packed)) user_passkey_reply_cp; +#define USER_PASSKEY_REPLY_CP_SIZE 10 + +#define OCF_USER_PASSKEY_NEG_REPLY 0x002F + +#define OCF_REMOTE_OOB_DATA_REPLY 0x0030 +typedef struct { + bdaddr_t bdaddr; + uint8_t hash[16]; + uint8_t randomizer[16]; +} __attribute__ ((packed)) remote_oob_data_reply_cp; +#define REMOTE_OOB_DATA_REPLY_CP_SIZE 38 + +#define OCF_REMOTE_OOB_DATA_NEG_REPLY 0x0033 + +#define OCF_IO_CAPABILITY_NEG_REPLY 0x0034 +typedef struct { + bdaddr_t bdaddr; + uint8_t reason; +} __attribute__ ((packed)) io_capability_neg_reply_cp; +#define IO_CAPABILITY_NEG_REPLY_CP_SIZE 7 + /* Link Policy */ #define OGF_LINK_POLICY 0x02 @@ -980,6 +1027,31 @@ typedef struct { } __attribute__ ((packed)) refresh_encryption_key_rp; #define REFRESH_ENCRYPTION_KEY_RP_SIZE 1 +#define OCF_READ_SIMPLE_PAIRING_MODE 0x0055 +typedef struct { + uint8_t status; + uint8_t mode; +} __attribute__ ((packed)) read_simple_pairing_mode_rp; +#define READ_SIMPLE_PAIRING_MODE_RP_SIZE 2 + +#define OCF_WRITE_SIMPLE_PAIRING_MODE 0x0056 +typedef struct { + uint8_t mode; +} __attribute__ ((packed)) write_simple_pairing_mode_cp; +#define WRITE_SIMPLE_PAIRING_MODE_CP_SIZE 1 +typedef struct { + uint8_t status; +} __attribute__ ((packed)) write_simple_pairing_mode_rp; +#define WRITE_SIMPLE_PAIRING_MODE_RP_SIZE 1 + +#define OCF_READ_LOCAL_OOB_DATA 0x0057 +typedef struct { + uint8_t status; + uint8_t hash[16]; + uint8_t randomizer[16]; +} __attribute__ ((packed)) read_local_oob_data_rp; +#define READ_LOCAL_OOB_DATA_RP_SIZE 33 + #define OCF_READ_INQUIRY_TRANSMIT_POWER_LEVEL 0x0058 typedef struct { uint8_t status; @@ -1021,6 +1093,17 @@ typedef struct { } __attribute__ ((packed)) enhanced_flush_cp; #define ENHANCED_FLUSH_CP_SIZE 3 +#define OCF_SEND_KEYPRESS_NOTIFY 0x0060 +typedef struct { + bdaddr_t bdaddr; + uint8_t type; +} __attribute__ ((packed)) send_keypress_notify_cp; +#define SEND_KEYPRESS_NOTIFY_CP_SIZE 7 +typedef struct { + uint8_t status; +} __attribute__ ((packed)) send_keypress_notify_rp; +#define SEND_KEYPRESS_NOTIFY_RP_SIZE 1 + /* Informational Parameters */ #define OGF_INFO_PARAM 0x04 @@ -1141,6 +1224,22 @@ typedef struct { /* Testing commands */ #define OGF_TESTING_CMD 0x3e +#define OCF_READ_LOOPBACK_MODE 0x0001 + +#define OCF_WRITE_LOOPBACK_MODE 0x0002 + +#define OCF_ENABLE_DEVICE_UNDER_TEST_MODE 0x0003 + +#define OCF_WRITE_SIMPLE_PAIRING_DEBUG_MODE 0x0004 +typedef struct { + uint8_t mode; +} __attribute__ ((packed)) write_simple_pairing_debug_mode_cp; +#define WRITE_SIMPLE_PAIRING_DEBUG_MODE_CP_SIZE 1 +typedef struct { + uint8_t status; +} __attribute__ ((packed)) write_simple_pairing_debug_mode_rp; +#define WRITE_SIMPLE_PAIRING_DEBUG_MODE_RP_SIZE 1 + /* Vendor specific commands */ #define OGF_VENDOR_CMD 0x3f @@ -1468,6 +1567,47 @@ typedef struct { } __attribute__ ((packed)) evt_encryption_key_refresh_complete; #define EVT_ENCRYPTION_KEY_REFRESH_COMPLETE_SIZE 3 +#define EVT_IO_CAPABILITY_REQUEST 0x31 +typedef struct { + bdaddr_t bdaddr; +} __attribute__ ((packed)) evt_io_capability_request; +#define EVT_IO_CAPABILITY_REQUEST_SIZE 6 + +#define EVT_IO_CAPABILITY_RESPONSE 0x32 +typedef struct { + bdaddr_t bdaddr; + uint8_t capability; + uint8_t oob_data; + uint8_t authentication; +} __attribute__ ((packed)) evt_io_capability_response; +#define EVT_IO_CAPABILITY_RESPONSE_SIZE 9 + +#define EVT_USER_CONFIRM_REQUEST 0x33 +typedef struct { + bdaddr_t bdaddr; + uint32_t passkey; +} __attribute__ ((packed)) evt_user_confirm_request; +#define EVT_USER_CONFIRM_REQUEST_SIZE 10 + +#define EVT_USER_PASSKEY_REQUEST 0x34 +typedef struct { + bdaddr_t bdaddr; +} __attribute__ ((packed)) evt_user_passkey_request; +#define EVT_USER_PASSKEY_REQUEST_SIZE 6 + +#define EVT_REMOTE_OOB_DATA_REQUEST 0x35 +typedef struct { + bdaddr_t bdaddr; +} __attribute__ ((packed)) evt_remote_oob_data_request; +#define EVT_REMOTE_OOB_DATA_REQUEST_SIZE 6 + +#define EVT_SIMPLE_PAIRING_COMPLETE 0x36 +typedef struct { + uint8_t status; + bdaddr_t bdaddr; +} __attribute__ ((packed)) evt_simple_pairing_complete; +#define EVT_SIMPLE_PAIRING_COMPLETE_SIZE 7 + #define EVT_LINK_SUPERVISION_TIMEOUT_CHANGED 0x38 typedef struct { uint16_t handle; @@ -1481,6 +1621,20 @@ typedef struct { } __attribute__ ((packed)) evt_enhanced_flush_complete; #define EVT_ENHANCED_FLUSH_COMPLETE_SIZE 2 +#define EVT_USER_PASSKEY_NOTIFY 0x3B +typedef struct { + bdaddr_t bdaddr; + uint32_t passkey; +} __attribute__ ((packed)) evt_user_passkey_notify; +#define EVT_USER_PASSKEY_NOTIFY_SIZE 10 + +#define EVT_KEYPRESS_NOTIFY 0x3C +typedef struct { + bdaddr_t bdaddr; + uint8_t type; +} __attribute__ ((packed)) evt_keypress_notify; +#define EVT_KEYPRESS_NOTIFY_SIZE 7 + #define EVT_REMOTE_HOST_FEATURES_NOTIFY 0x3D typedef struct { bdaddr_t bdaddr; -- cgit From 7208028266fc19d380ac77c97c46b6f2fdc80e1d Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sat, 2 Feb 2008 03:11:09 +0000 Subject: Update copyright information --- include/hci.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index a4f88146..92c3a447 100644 --- a/include/hci.h +++ b/include/hci.h @@ -4,7 +4,7 @@ * * Copyright (C) 2000-2001 Qualcomm Incorporated * Copyright (C) 2002-2003 Maxim Krasnyansky - * Copyright (C) 2002-2007 Marcel Holtmann + * Copyright (C) 2002-2008 Marcel Holtmann * * * This program is free software; you can redistribute it and/or modify -- cgit From 237531ab9c9e06a131b34d6524bab659d8147fdf Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Thu, 15 May 2008 15:33:36 +0000 Subject: Add OCF constants for synchronous flow control enabling --- include/hci.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 92c3a447..6e295be3 100644 --- a/include/hci.h +++ b/include/hci.h @@ -869,6 +869,10 @@ typedef struct { } __attribute__ ((packed)) read_transmit_power_level_rp; #define READ_TRANSMIT_POWER_LEVEL_RP_SIZE 4 +#define OCF_READ_SYNC_FLOW_ENABLE 0x002E + +#define OCF_WRITE_SYNC_FLOW_ENABLE 0x002F + #define OCF_SET_CONTROLLER_TO_HOST_FC 0x0031 #define OCF_HOST_BUFFER_SIZE 0x0033 -- cgit From 1c2202809e5da072ac3cf8b832b5ae310369bad6 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Mon, 16 Jun 2008 01:23:58 +0000 Subject: Add definition for authentication requirements --- include/hci.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'include/hci.h') diff --git a/include/hci.h b/include/hci.h index 6e295be3..499f1bdd 100644 --- a/include/hci.h +++ b/include/hci.h @@ -83,6 +83,7 @@ enum { #define HCIGETDEVINFO _IOR('H', 211, int) #define HCIGETCONNLIST _IOR('H', 212, int) #define HCIGETCONNINFO _IOR('H', 213, int) +#define HCIGETAUTHINFO _IOR('H', 215, int) #define HCISETRAW _IOW('H', 220, int) #define HCISETSCAN _IOW('H', 221, int) @@ -1813,6 +1814,11 @@ struct hci_conn_info_req { struct hci_conn_info conn_info[0]; }; +struct hci_auth_info_req { + bdaddr_t bdaddr; + uint8_t type; +}; + struct hci_inquiry_req { uint16_t dev_id; uint16_t flags; -- cgit