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

📄 hci.h

📁 Bluezan implementation of the Bluetooth&#8482 wireless standards specifications for Linux. The code
💻 H
📖 第 1 页 / 共 3 页
字号:
/* * *  BlueZ - Bluetooth protocol stack for Linux * *  Copyright (C) 2000-2001  Qualcomm Incorporated *  Copyright (C) 2002-2003  Maxim Krasnyansky <maxk@qualcomm.com> *  Copyright (C) 2002-2005  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.71 2005/06/17 11:48:17 holtmann Exp $ */#ifndef __HCI_H#define __HCI_H#ifdef __cplusplusextern "C" {#endif#include <sys/socket.h>#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_SECMGR};/* 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 HCISETSECMGR	_IOW('H', 230, 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_VENDOR_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	(HCI_DM1 | HCI_DH1 | HCI_DM3 | HCI_DH3 | HCI_DM5 | HCI_DH5)/* 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_PIN_OR_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#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#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#define HCI_LM_SECURE	0x0020/* -----  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_CREATE_CONN_CANCEL		0x0008typedef struct {	bdaddr_t	bdaddr;} __attribute__ ((packed)) create_conn_cancel_cp;#define CREATE_CONN_CANCEL_CP_SIZE 6#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_CHANGE_CONN_LINK_KEY	0x0015typedef struct {	uint16_t	handle;} __attribute__ ((packed)) change_conn_link_key_cp;#define CHANGE_CONN_LINK_KEY_CP_SIZE 2#define OCF_MASTER_LINK_KEY		0x0017typedef struct {	uint8_t		key_flag;} __attribute__ ((packed)) master_link_key_cp;#define MASTER_LINK_KEY_CP_SIZE 1#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_REMOTE_NAME_REQ_CANCEL	0x001Atypedef struct {	bdaddr_t	bdaddr;} __attribute__ ((packed)) remote_name_req_cancel_cp;#define REMOTE_NAME_REQ_CANCEL_CP_SIZE 6#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_EXT_FEATURES	0x001Ctypedef 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		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#define OCF_READ_LMP_HANDLE		0x0020#define OCF_SETUP_SYNC_CONN		0x0028typedef 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	0x0029typedef 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	0x002Atypedef 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#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;

⌨️ 快捷键说明

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