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