diff options
| author | Max Krasnyansky <maxk@qualcomm.com> | 2002-03-08 21:10:06 +0000 | 
|---|---|---|
| committer | Max Krasnyansky <maxk@qualcomm.com> | 2002-03-08 21:10:06 +0000 | 
| commit | a48d8b4639f36e6fc2d7e87cac92e178674caaa1 (patch) | |
| tree | ae1b9dc0919336032fb143fb3930cb6fe0523593 /include/l2cap.h | |
Initial revision
Diffstat (limited to 'include/l2cap.h')
| -rw-r--r-- | include/l2cap.h | 200 | 
1 files changed, 200 insertions, 0 deletions
| diff --git a/include/l2cap.h b/include/l2cap.h new file mode 100644 index 00000000..25178401 --- /dev/null +++ b/include/l2cap.h @@ -0,0 +1,200 @@ +/*  +   BlueZ - Bluetooth protocol stack for Linux +   Copyright (C) 2000-2001 Qualcomm Incorporated + +   Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> + +   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 __L2CAP_H +#define __L2CAP_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* L2CAP defaults */ +#define L2CAP_DEFAULT_MTU 	672 +#define L2CAP_DEFAULT_FLUSH_TO	0xFFFF + +#define L2CAP_CONN_TIMEOUT 	(HZ * 40) + +/* L2CAP socket address */ +struct sockaddr_l2 { +	sa_family_t	l2_family; +	unsigned short	l2_psm; +	bdaddr_t	l2_bdaddr; +}; + +/* Socket options */ +#define L2CAP_OPTIONS	0x01 +struct l2cap_options { +	uint16_t omtu; +	uint16_t imtu; +	uint16_t flush_to; +}; + +#define L2CAP_CONNINFO  0x02 +struct l2cap_conninfo { +	uint16_t hci_handle; +}; + +#define L2CAP_LM	0x03 +#define L2CAP_LM_MASTER		0x0001 +#define L2CAP_LM_AUTH		0x0002 +#define L2CAP_LM_ENCRYPT	0x0004 +#define L2CAP_LM_TRUSTED	0x0008 + +#define L2CAP_QOS	0x04 +struct l2cap_qos { +	uint16_t service_type; +	uint32_t token_rate; +	uint32_t token_bucket_size; +	uint32_t peak_bandwidth; +	uint32_t latency; +	uint32_t delay_variation; +}; + +#define L2CAP_SERV_NO_TRAFFIC	0x00 +#define L2CAP_SERV_BEST_EFFORT	0x01 +#define L2CAP_SERV_GUARANTEED	0x02 + +/* L2CAP command codes */ +#define L2CAP_COMMAND_REJ 0x01 +#define L2CAP_CONN_REQ    0x02 +#define L2CAP_CONN_RSP    0x03 +#define L2CAP_CONF_REQ    0x04 +#define L2CAP_CONF_RSP    0x05 +#define L2CAP_DISCONN_REQ 0x06 +#define L2CAP_DISCONN_RSP 0x07 +#define L2CAP_ECHO_REQ    0x08 +#define L2CAP_ECHO_RSP    0x09 +#define L2CAP_INFO_REQ    0x0a +#define L2CAP_INFO_RSP    0x0b + +/* L2CAP structures */ +typedef struct { +	uint16_t      len; +	uint16_t      cid; +} __attribute__ ((packed)) 	l2cap_hdr; +#define L2CAP_HDR_SIZE		4 + +typedef struct { +	uint8_t       code; +	uint8_t       ident; +	uint16_t      len; +} __attribute__ ((packed))	l2cap_cmd_hdr; +#define L2CAP_CMD_HDR_SIZE	4 + +typedef struct { +	uint16_t      reason; +} __attribute__ ((packed))	l2cap_cmd_rej; +#define L2CAP_CMD_REJ_SIZE	2 + +typedef struct { +	uint16_t      psm; +	uint16_t      scid; +} __attribute__ ((packed))	l2cap_conn_req; +#define L2CAP_CONN_REQ_SIZE	4 + +typedef struct { +	uint16_t      dcid; +	uint16_t      scid; +	uint16_t      result; +	uint16_t      status; +} __attribute__ ((packed))	l2cap_conn_rsp; +#define L2CAP_CONN_RSP_SIZE	8 + +/* connect result */ +#define L2CAP_CR_SUCCESS    0x0000 +#define L2CAP_CR_PEND       0x0001 +#define L2CAP_CR_BAD_PSM    0x0002 +#define L2CAP_CR_SEC_BLOCK  0x0003 +#define L2CAP_CR_NO_MEM     0x0004 + +/* connect status */ +#define L2CAP_CS_NO_INFO      0x0000 +#define L2CAP_CS_AUTHEN_PEND  0x0001 +#define L2CAP_CS_AUTHOR_PEND  0x0002 + +typedef struct { +	uint16_t      dcid; +	uint16_t      flags; +	uint8_t       data[0]; +} __attribute__ ((packed))	l2cap_conf_req; +#define L2CAP_CONF_REQ_SIZE	4 + +typedef struct { +	uint16_t      scid; +	uint16_t      flags; +	uint16_t      result; +	uint8_t       data[0]; +} __attribute__ ((packed))	l2cap_conf_rsp; +#define L2CAP_CONF_RSP_SIZE   	6 + +#define L2CAP_CONF_SUCCESS	0x00 +#define L2CAP_CONF_UNACCEPT	0x01 + +typedef struct { +	uint8_t       type; +	uint8_t       len; +	uint8_t       val[0]; +} __attribute__ ((packed))	l2cap_conf_opt; +#define L2CAP_CONF_OPT_SIZE	2 + +#define L2CAP_CONF_MTU		0x01 +#define L2CAP_CONF_FLUSH_TO	0x02 +#define L2CAP_CONF_QOS		0x03 + +#define L2CAP_CONF_MAX_SIZE	22 + +typedef struct { +	uint16_t      dcid; +	uint16_t      scid; +} __attribute__ ((packed)) 	l2cap_disconn_req; +#define L2CAP_DISCONN_REQ_SIZE	4 + +typedef struct { +	uint16_t      dcid; +	uint16_t      scid; +} __attribute__ ((packed)) 	l2cap_disconn_rsp; +#define L2CAP_DISCONN_RSP_SIZE	4 + +typedef struct { +	uint16_t       type; +	uint8_t        data[0]; +} __attribute__ ((packed))	l2cap_info_req; +#define L2CAP_INFO_REQ_SIZE	2 + +typedef struct { +	uint16_t       type; +	uint16_t       result; +	uint8_t        data[0]; +} __attribute__ ((packed))	l2cap_info_rsp; +#define L2CAP_INFO_RSP_SIZE	4 + +#ifdef __cplusplus +} +#endif + +#endif /* __L2CAP_H */ | 
