⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hci.h

📁 linux下的蓝牙协议栈
💻 H
📖 第 1 页 / 共 2 页
字号:
/* * *  BlueZ - Bluetooth protocol stack for Linux * *  Copyright (C) 2000-2001  Qualcomm Incorporated *  Copyright (C) 2002-2003  Maxim Krasnyansky <maxk@qualcomm.com> *  Copyright (C) 2002-2004  Marcel Holtmann <marcel@holtmann.org> * * *  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: hci.h,v 1.37 2004/07/10 11:28:03 holtmann Exp $ */#ifndef __HCI_H#define __HCI_H#ifdef __cplusplusextern "C" {#endif#define HCI_MAX_DEV	16#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#define HCI_DEV_SUSPEND	5#define HCI_DEV_RESUME	6/* HCI device types */#define HCI_VHCI	0#define HCI_USB		1#define HCI_PCCARD	2#define HCI_UART	3#define HCI_RS232	4#define HCI_PCI		5/* 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 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_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_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)/* 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#define ACL_ACTIVE_BCAST	0x04#define ACL_PICO_BCAST		0x08/* 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_SNIFF	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#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#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_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/* 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#define HCI_LM_RELIABLE	0x0010/* -----  HCI Commands ----- *//* Link Control */#define OGF_LINK_CTL		0x01#define OCF_INQUIRY			0x0001typedef struct {	uint8_t		lap[3];	uint8_t		length;		/* 1.28s units */	uint8_t		num_rsp;} __attribute__ ((packed)) inquiry_cp;#define INQUIRY_CP_SIZE 5typedef struct {	uint8_t		status;	bdaddr_t	bdaddr;} __attribute__ ((packed)) status_bdaddr_rp;#define STATUS_BDADDR_RP_SIZE 7#define OCF_INQUIRY_CANCEL		0x0002#define OCF_PERIODIC_INQUIRY		0x0003typedef 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_CREATE_CONN			0x0005typedef 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_DISCONNECT			0x0006typedef struct {	uint16_t	handle;	uint8_t		reason;} __attribute__ ((packed)) disconnect_cp;#define DISCONNECT_CP_SIZE 3#define OCF_ADD_SCO			0x0007typedef struct {	uint16_t	handle;	uint16_t	pkt_type;} __attribute__ ((packed)) add_sco_cp;#define ADD_SCO_CP_SIZE 4#define OCF_ACCEPT_CONN_REQ		0x0009typedef 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		0x000Atypedef struct {	bdaddr_t	bdaddr;	uint8_t		reason;} __attribute__ ((packed)) reject_conn_req_cp;#define REJECT_CONN_REQ_CP_SIZE	7#define OCF_LINK_KEY_REPLY		0x000Btypedef struct {	bdaddr_t	bdaddr;	uint8_t		link_key[16];} __attribute__ ((packed)) link_key_reply_cp;#define LINK_KEY_REPLY_CP_SIZE 22#define OCF_LINK_KEY_NEG_REPLY		0x000C#define OCF_PIN_CODE_REPLY		0x000Dtypedef 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_PIN_CODE_NEG_REPLY		0x000E#define OCF_SET_CONN_PTYPE		0x000Ftypedef 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		0x0011typedef struct {	uint16_t	 handle;} __attribute__ ((packed)) auth_requested_cp;#define AUTH_REQUESTED_CP_SIZE 2#define OCF_SET_CONN_ENCRYPT		0x0013typedef 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		0x0019typedef 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	0x001Btypedef struct {	uint16_t	handle;} __attribute__ ((packed)) read_remote_features_cp;#define READ_REMOTE_FEATURES_CP_SIZE 2#define OCF_READ_REMOTE_VERSION		0x001Dtypedef struct {	uint16_t	handle;} __attribute__ ((packed)) read_remote_version_cp;#define READ_REMOTE_VERSION_CP_SIZE 2#define OCF_READ_CLOCK_OFFSET		0x001Ftypedef 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 OCF_HOLD_MODE			0x0001typedef 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			0x0003typedef struct {	uint16_t	handle;	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#define OCF_EXIT_SNIFF_MODE		0x0004typedef struct {	uint16_t	handle;} __attribute__ ((packed)) exit_sniff_mode_cp;#define EXIT_SNIFF_MODE_CP_SIZE 2#define OCF_PARK_MODE			0x0005typedef struct {	uint16_t	handle;	uint16_t	max_interval;	uint16_t	min_interval;} __attribute__ ((packed)) park_mode_cp;#define PARK_MODE_CP_SIZE 6#define OCF_EXIT_PARK_MODE		0x0006typedef struct {	uint16_t	handle;} __attribute__ ((packed)) exit_park_mode_cp;#define EXIT_PARK_MODE_CP_SIZE 2#define OCF_QOS_SETUP			0x0007typedef 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 17typedef 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		0x0009typedef struct {	uint16_t	handle;} __attribute__ ((packed)) role_discovery_cp;#define ROLE_DISCOVERY_CP_SIZE 2typedef struct {	uint8_t		status;	uint16_t	handle;	uint8_t		role;} __attribute__ ((packed)) role_discovery_rp;#define ROLE_DISCOVERY_RP_SIZE 4#define OCF_SWITCH_ROLE			0x000Btypedef struct {	bdaddr_t	bdaddr;	uint8_t		role;} __attribute__ ((packed)) switch_role_cp;#define SWITCH_ROLE_CP_SIZE 7#define OCF_READ_LINK_POLICY		0x000Ctypedef struct {	uint16_t	handle;} __attribute__ ((packed)) read_link_policy_cp;#define READ_LINK_POLICY_CP_SIZE 2typedef 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_WRITE_LINK_POLICY		0x000Dtypedef struct {	uint16_t	handle;	uint16_t	policy;} __attribute__ ((packed)) write_link_policy_cp;#define WRITE_LINK_POLICY_CP_SIZE 4typedef struct {	uint8_t 	status;	uint16_t	handle;} __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		0x0005typedef 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		0x0013typedef struct {	uint8_t		name[248];} __attribute__ ((packed)) change_local_name_cp;#define CHANGE_LOCAL_NAME_CP_SIZE 248 #define OCF_READ_LOCAL_NAME		0x0014typedef 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		0x0017typedef 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		0x0018typedef 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		0x001Btypedef 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		0x001Ctypedef 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		0x001Dtypedef 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		0x001Etypedef struct {	uint16_t	interval;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -