1a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky/*
2764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann *
3764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann *  BlueZ - Bluetooth protocol stack for Linux
4764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann *
5764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann *  Copyright (C) 2000-2001  Qualcomm Incorporated
6764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann *  Copyright (C) 2002-2003  Maxim Krasnyansky <maxk@qualcomm.com>
79184e2eeb7b97371c6b83b747c8984e2340d2b47Marcel Holtmann *  Copyright (C) 2002-2010  Marcel Holtmann <marcel@holtmann.org>
8764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann *
9764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann *
10764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann *  This program is free software; you can redistribute it and/or modify
11c0d524486a50e8366c12c5ebea1a4441e9db46aaMarcel Holtmann *  it under the terms of the GNU General Public License as published by
12c0d524486a50e8366c12c5ebea1a4441e9db46aaMarcel Holtmann *  the Free Software Foundation; either version 2 of the License, or
13c0d524486a50e8366c12c5ebea1a4441e9db46aaMarcel Holtmann *  (at your option) any later version.
14764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann *
15c0d524486a50e8366c12c5ebea1a4441e9db46aaMarcel Holtmann *  This program is distributed in the hope that it will be useful,
16c0d524486a50e8366c12c5ebea1a4441e9db46aaMarcel Holtmann *  but WITHOUT ANY WARRANTY; without even the implied warranty of
17c0d524486a50e8366c12c5ebea1a4441e9db46aaMarcel Holtmann *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18c0d524486a50e8366c12c5ebea1a4441e9db46aaMarcel Holtmann *  GNU General Public License for more details.
19764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann *
20c0d524486a50e8366c12c5ebea1a4441e9db46aaMarcel Holtmann *  You should have received a copy of the GNU General Public License
21c0d524486a50e8366c12c5ebea1a4441e9db46aaMarcel Holtmann *  along with this program; if not, write to the Free Software
22c0d524486a50e8366c12c5ebea1a4441e9db46aaMarcel Holtmann *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
23764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann *
24a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky */
25a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky
26a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky#ifndef __L2CAP_H
27a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky#define __L2CAP_H
28a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky
29a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky#ifdef __cplusplus
30a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyanskyextern "C" {
31a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky#endif
32a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky
3318cd6ecb4eae48ffdcf6df2bbf5fd828459c6cecMarcel Holtmann#include <sys/socket.h>
3418cd6ecb4eae48ffdcf6df2bbf5fd828459c6cecMarcel Holtmann
35a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky/* L2CAP defaults */
36b45841191f6ab4cc55ccd040a5530c2d08c6ddc6Marcel Holtmann#define L2CAP_DEFAULT_MTU	672
37a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky#define L2CAP_DEFAULT_FLUSH_TO	0xFFFF
38a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky
39a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky/* L2CAP socket address */
40a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyanskystruct sockaddr_l2 {
41a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky	sa_family_t	l2_family;
42a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky	unsigned short	l2_psm;
43a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky	bdaddr_t	l2_bdaddr;
443de95535af491d02f67b3bba7d1da5ad7c6dbeeaMarcel Holtmann	unsigned short	l2_cid;
45a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky};
46a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky
47e1650950c01cf268c61b332efbb9b5b3f731a158Marcel Holtmann/* L2CAP socket options */
48a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky#define L2CAP_OPTIONS	0x01
49a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyanskystruct l2cap_options {
508661484ddc5d79689c6a3d1dd41102ca9e89a8cfMarcel Holtmann	uint16_t	omtu;
518661484ddc5d79689c6a3d1dd41102ca9e89a8cfMarcel Holtmann	uint16_t	imtu;
528661484ddc5d79689c6a3d1dd41102ca9e89a8cfMarcel Holtmann	uint16_t	flush_to;
538661484ddc5d79689c6a3d1dd41102ca9e89a8cfMarcel Holtmann	uint8_t		mode;
5468fc2222b6b3930970b21d29460868ee7e20a5e2Marcel Holtmann	uint8_t		fcs;
55d006c7abe44a7d35a2c464617eaf0355dd337b0fGustavo F. Padovan	uint8_t		max_tx;
56d006c7abe44a7d35a2c464617eaf0355dd337b0fGustavo F. Padovan	uint16_t	txwin_size;
57a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky};
58a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky
59b45841191f6ab4cc55ccd040a5530c2d08c6ddc6Marcel Holtmann#define L2CAP_CONNINFO	0x02
60a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyanskystruct l2cap_conninfo {
618661484ddc5d79689c6a3d1dd41102ca9e89a8cfMarcel Holtmann	uint16_t	hci_handle;
628661484ddc5d79689c6a3d1dd41102ca9e89a8cfMarcel Holtmann	uint8_t		dev_class[3];
63a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky};
64a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky
65a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky#define L2CAP_LM	0x03
66a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky#define L2CAP_LM_MASTER		0x0001
67a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky#define L2CAP_LM_AUTH		0x0002
68a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky#define L2CAP_LM_ENCRYPT	0x0004
69a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky#define L2CAP_LM_TRUSTED	0x0008
70742d032d41631219ddbd39f39b7c70419064acc1Marcel Holtmann#define L2CAP_LM_RELIABLE	0x0010
715106bfbab293c6168eeb0f036a37efc548a632b4Marcel Holtmann#define L2CAP_LM_SECURE		0x0020
72a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky
73a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky/* L2CAP command codes */
74764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann#define L2CAP_COMMAND_REJ	0x01
75764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann#define L2CAP_CONN_REQ		0x02
76764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann#define L2CAP_CONN_RSP		0x03
77764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann#define L2CAP_CONF_REQ		0x04
78764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann#define L2CAP_CONF_RSP		0x05
79764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann#define L2CAP_DISCONN_REQ	0x06
80764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann#define L2CAP_DISCONN_RSP	0x07
81764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann#define L2CAP_ECHO_REQ		0x08
82764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann#define L2CAP_ECHO_RSP		0x09
83764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann#define L2CAP_INFO_REQ		0x0a
84764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann#define L2CAP_INFO_RSP		0x0b
85a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky
86a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky/* L2CAP structures */
87a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyanskytypedef struct {
88764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann	uint16_t	len;
89764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann	uint16_t	cid;
90764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann} __attribute__ ((packed)) l2cap_hdr;
91764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann#define L2CAP_HDR_SIZE 4
92a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky
93a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyanskytypedef struct {
94764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann	uint8_t		code;
95764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann	uint8_t		ident;
96764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann	uint16_t	len;
97764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann} __attribute__ ((packed)) l2cap_cmd_hdr;
98764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann#define L2CAP_CMD_HDR_SIZE 4
99a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky
100a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyanskytypedef struct {
101764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann	uint16_t	reason;
102764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann} __attribute__ ((packed)) l2cap_cmd_rej;
103764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann#define L2CAP_CMD_REJ_SIZE 2
104a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky
105a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyanskytypedef struct {
106764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann	uint16_t	psm;
107764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann	uint16_t	scid;
108764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann} __attribute__ ((packed)) l2cap_conn_req;
109764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann#define L2CAP_CONN_REQ_SIZE 4
110a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky
111a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyanskytypedef struct {
112764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann	uint16_t	dcid;
113764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann	uint16_t	scid;
114764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann	uint16_t	result;
115764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann	uint16_t	status;
116764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann} __attribute__ ((packed)) l2cap_conn_rsp;
117764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann#define L2CAP_CONN_RSP_SIZE 8
118a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky
119a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky/* connect result */
120764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann#define L2CAP_CR_SUCCESS	0x0000
121764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann#define L2CAP_CR_PEND		0x0001
122764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann#define L2CAP_CR_BAD_PSM	0x0002
123764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann#define L2CAP_CR_SEC_BLOCK	0x0003
124764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann#define L2CAP_CR_NO_MEM		0x0004
125a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky
126a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky/* connect status */
127764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann#define L2CAP_CS_NO_INFO	0x0000
128764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann#define L2CAP_CS_AUTHEN_PEND	0x0001
129764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann#define L2CAP_CS_AUTHOR_PEND	0x0002
130a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky
131a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyanskytypedef struct {
132764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann	uint16_t	dcid;
133764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann	uint16_t	flags;
134764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann	uint8_t		data[0];
135764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann} __attribute__ ((packed)) l2cap_conf_req;
136764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann#define L2CAP_CONF_REQ_SIZE 4
137a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky
138a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyanskytypedef struct {
139764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann	uint16_t	scid;
140764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann	uint16_t	flags;
141764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann	uint16_t	result;
142764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann	uint8_t		data[0];
143764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann} __attribute__ ((packed)) l2cap_conf_rsp;
144764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann#define L2CAP_CONF_RSP_SIZE 6
145a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky
146984277aa49d35e4033f6c65266096364ac3243edMarcel Holtmann#define L2CAP_CONF_SUCCESS	0x0000
147984277aa49d35e4033f6c65266096364ac3243edMarcel Holtmann#define L2CAP_CONF_UNACCEPT	0x0001
148984277aa49d35e4033f6c65266096364ac3243edMarcel Holtmann#define L2CAP_CONF_REJECT	0x0002
149984277aa49d35e4033f6c65266096364ac3243edMarcel Holtmann#define L2CAP_CONF_UNKNOWN	0x0003
150a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky
151a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyanskytypedef struct {
152764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann	uint8_t		type;
153764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann	uint8_t		len;
154764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann	uint8_t		val[0];
155764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann} __attribute__ ((packed)) l2cap_conf_opt;
156764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann#define L2CAP_CONF_OPT_SIZE 2
157a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky
158a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky#define L2CAP_CONF_MTU		0x01
159a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky#define L2CAP_CONF_FLUSH_TO	0x02
160a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky#define L2CAP_CONF_QOS		0x03
161984277aa49d35e4033f6c65266096364ac3243edMarcel Holtmann#define L2CAP_CONF_RFC		0x04
1627e06679b800793776e909ead504883187ff8c671Marcel Holtmann#define L2CAP_CONF_FCS		0x05
163a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky
164a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky#define L2CAP_CONF_MAX_SIZE	22
165a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky
166302330d72bbdc03f33090747ae4b13110ec3a9c4Marcel Holtmann#define L2CAP_MODE_BASIC	0x00
167302330d72bbdc03f33090747ae4b13110ec3a9c4Marcel Holtmann#define L2CAP_MODE_RETRANS	0x01
168302330d72bbdc03f33090747ae4b13110ec3a9c4Marcel Holtmann#define L2CAP_MODE_FLOWCTL	0x02
1692c28cf248bdbf6ae1fa61923918f4c868b40a615Marcel Holtmann#define L2CAP_MODE_ERTM		0x03
1702c28cf248bdbf6ae1fa61923918f4c868b40a615Marcel Holtmann#define L2CAP_MODE_STREAMING	0x04
171302330d72bbdc03f33090747ae4b13110ec3a9c4Marcel Holtmann
172a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyanskytypedef struct {
173764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann	uint16_t	dcid;
174764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann	uint16_t	scid;
175764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann} __attribute__ ((packed)) l2cap_disconn_req;
176764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann#define L2CAP_DISCONN_REQ_SIZE 4
177a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky
178a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyanskytypedef struct {
179764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann	uint16_t	dcid;
180764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann	uint16_t	scid;
181764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann} __attribute__ ((packed)) l2cap_disconn_rsp;
182764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann#define L2CAP_DISCONN_RSP_SIZE 4
183a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky
184a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyanskytypedef struct {
185764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann	uint16_t	type;
186764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann} __attribute__ ((packed)) l2cap_info_req;
187764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann#define L2CAP_INFO_REQ_SIZE 2
188a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky
189a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyanskytypedef struct {
190764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann	uint16_t	type;
191764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann	uint16_t	result;
192764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann	uint8_t		data[0];
193764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann} __attribute__ ((packed)) l2cap_info_rsp;
194764abe23a0d4ede999f1f34ee0e310c0eeaaff79Marcel Holtmann#define L2CAP_INFO_RSP_SIZE 4
195a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky
1964f018af0f15901dcda46f6b93ebf9db7c0d1b993Marcel Holtmann/* info type */
1974f018af0f15901dcda46f6b93ebf9db7c0d1b993Marcel Holtmann#define L2CAP_IT_CL_MTU		0x0001
1984f018af0f15901dcda46f6b93ebf9db7c0d1b993Marcel Holtmann#define L2CAP_IT_FEAT_MASK	0x0002
1994f018af0f15901dcda46f6b93ebf9db7c0d1b993Marcel Holtmann
2004f018af0f15901dcda46f6b93ebf9db7c0d1b993Marcel Holtmann/* info result */
2014f018af0f15901dcda46f6b93ebf9db7c0d1b993Marcel Holtmann#define L2CAP_IR_SUCCESS	0x0000
2024f018af0f15901dcda46f6b93ebf9db7c0d1b993Marcel Holtmann#define L2CAP_IR_NOTSUPP	0x0001
2034f018af0f15901dcda46f6b93ebf9db7c0d1b993Marcel Holtmann
204a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky#ifdef __cplusplus
205a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky}
206a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky#endif
207a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky
208a48d8b4639f36e6fc2d7e87cac92e178674caaaMax Krasnyansky#endif /* __L2CAP_H */
209