aboutsummaryrefslogtreecommitdiff
path: root/nimbluez/bluez/bz_l2cap.nim
diff options
context:
space:
mode:
authorElectric-Blue <Electric-Blue@users.noreply.github.com>2016-01-26 02:03:48 +0300
committerElectric-Blue <Electric-Blue@users.noreply.github.com>2016-01-26 02:03:48 +0300
commit0c4a1cc1c2083a871562364de5df4f9d88ec321e (patch)
treeddb8428845b663c078359eda4ec81bdcc157414f /nimbluez/bluez/bz_l2cap.nim
parent27a7a2a18a6db8b67cbe0e86c37cb174de2a1295 (diff)
downloadNimBluez-0c4a1cc1c2083a871562364de5df4f9d88ec321e.tar.gz
NimBluez-0c4a1cc1c2083a871562364de5df4f9d88ec321e.zip
First version.
Diffstat (limited to 'nimbluez/bluez/bz_l2cap.nim')
-rw-r--r--nimbluez/bluez/bz_l2cap.nim344
1 files changed, 344 insertions, 0 deletions
diff --git a/nimbluez/bluez/bz_l2cap.nim b/nimbluez/bluez/bz_l2cap.nim
new file mode 100644
index 0000000..a819b13
--- /dev/null
+++ b/nimbluez/bluez/bz_l2cap.nim
@@ -0,0 +1,344 @@
+#
+#
+# BlueZ - Bluetooth protocol stack for Linux
+#
+# Copyright (C) 2000-2001 Qualcomm Incorporated
+# Copyright (C) 2002-2003 Maxim Krasnyansky <maxk@qualcomm.com>
+# Copyright (C) 2002-2010 Marcel Holtmann <marcel@holtmann.org>
+# Copyright (c) 2012 Code Aurora Forum. All rights reserved.
+#
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+#
+#
+
+{.deadCodeElim: on.}
+
+import bz_bluetooth
+
+# L2CAP defaults
+
+const
+ L2CAP_DEFAULT_MTU* = 672
+ L2CAP_DEFAULT_FLUSH_TO* = 0x0000FFFF
+
+# L2CAP socket address
+
+type
+ sockaddr_l2* = object
+ l2_family*: cushort
+ l2_psm*: cushort
+ l2_bdaddr*: bdaddr_t
+ l2_cid*: cushort
+ l2_bdaddr_type*: uint8
+
+
+# L2CAP socket options
+
+const
+ L2CAP_OPTIONS* = 0x00000001
+
+type
+ l2cap_options* = object
+ omtu*: uint16
+ imtu*: uint16
+ flush_to*: uint16
+ mode*: uint8
+ fcs*: uint8
+ max_tx*: uint8
+ txwin_size*: uint16
+
+
+const
+ L2CAP_CONNINFO* = 0x00000002
+
+type
+ l2cap_conninfo* = object
+ hci_handle*: uint16
+ dev_class*: array[3, uint8]
+
+
+const
+ L2CAP_LM* = 0x00000003
+ L2CAP_LM_MASTER* = 0x00000001
+ L2CAP_LM_AUTH* = 0x00000002
+ L2CAP_LM_ENCRYPT* = 0x00000004
+ L2CAP_LM_TRUSTED* = 0x00000008
+ L2CAP_LM_RELIABLE* = 0x00000010
+ L2CAP_LM_SECURE* = 0x00000020
+
+# L2CAP command codes
+
+const
+ L2CAP_COMMAND_REJ* = 0x00000001
+ L2CAP_CONN_REQ* = 0x00000002
+ L2CAP_CONN_RSP* = 0x00000003
+ L2CAP_CONF_REQ* = 0x00000004
+ L2CAP_CONF_RSP* = 0x00000005
+ L2CAP_DISCONN_REQ* = 0x00000006
+ L2CAP_DISCONN_RSP* = 0x00000007
+ L2CAP_ECHO_REQ* = 0x00000008
+ L2CAP_ECHO_RSP* = 0x00000009
+ L2CAP_INFO_REQ* = 0x0000000A
+ L2CAP_INFO_RSP* = 0x0000000B
+ L2CAP_CREATE_REQ* = 0x0000000C
+ L2CAP_CREATE_RSP* = 0x0000000D
+ L2CAP_MOVE_REQ* = 0x0000000E
+ L2CAP_MOVE_RSP* = 0x0000000F
+ L2CAP_MOVE_CFM* = 0x00000010
+ L2CAP_MOVE_CFM_RSP* = 0x00000011
+
+# L2CAP extended feature mask
+
+const
+ L2CAP_FEAT_FLOWCTL* = 0x00000001
+ L2CAP_FEAT_RETRANS* = 0x00000002
+ L2CAP_FEAT_BIDIR_QOS* = 0x00000004
+ L2CAP_FEAT_ERTM* = 0x00000008
+ L2CAP_FEAT_STREAMING* = 0x00000010
+ L2CAP_FEAT_FCS* = 0x00000020
+ L2CAP_FEAT_EXT_FLOW* = 0x00000040
+ L2CAP_FEAT_FIXED_CHAN* = 0x00000080
+ L2CAP_FEAT_EXT_WINDOW* = 0x00000100
+ L2CAP_FEAT_UCD* = 0x00000200
+
+# L2CAP fixed channels
+
+const
+ L2CAP_FC_L2CAP* = 0x00000002
+ L2CAP_FC_CONNLESS* = 0x00000004
+ L2CAP_FC_A2MP* = 0x00000008
+
+# L2CAP structures
+
+type
+ l2cap_hdr* = object {.packed.}
+ len*: uint16
+ cid*: uint16
+
+
+const
+ L2CAP_HDR_SIZE* = 4
+
+type
+ l2cap_cmd_hdr* = object {.packed.}
+ code*: uint8
+ ident*: uint8
+ len*: uint16
+
+
+const
+ L2CAP_CMD_HDR_SIZE* = 4
+
+type
+ l2cap_cmd_rej* = object {.packed.}
+ reason*: uint16
+
+
+const
+ L2CAP_CMD_REJ_SIZE* = 2
+
+type
+ l2cap_conn_req* = object {.packed.}
+ psm*: uint16
+ scid*: uint16
+
+
+const
+ L2CAP_CONN_REQ_SIZE* = 4
+
+type
+ l2cap_conn_rsp* = object {.packed.}
+ dcid*: uint16
+ scid*: uint16
+ result*: uint16
+ status*: uint16
+
+
+const
+ L2CAP_CONN_RSP_SIZE* = 8
+
+# connect result
+
+const
+ L2CAP_CR_SUCCESS* = 0x00000000
+ L2CAP_CR_PEND* = 0x00000001
+ L2CAP_CR_BAD_PSM* = 0x00000002
+ L2CAP_CR_SEC_BLOCK* = 0x00000003
+ L2CAP_CR_NO_MEM* = 0x00000004
+
+# connect status
+
+const
+ L2CAP_CS_NO_INFO* = 0x00000000
+ L2CAP_CS_AUTHEN_PEND* = 0x00000001
+ L2CAP_CS_AUTHOR_PEND* = 0x00000002
+
+type
+ l2cap_conf_req* = object {.packed.}
+ dcid*: uint16
+ flags*: uint16
+ data*: array[0, uint8]
+
+
+const
+ L2CAP_CONF_REQ_SIZE* = 4
+
+type
+ l2cap_conf_rsp* = object {.packed.}
+ scid*: uint16
+ flags*: uint16
+ result*: uint16
+ data*: array[0, uint8]
+
+
+const
+ L2CAP_CONF_RSP_SIZE* = 6
+ L2CAP_CONF_SUCCESS* = 0x00000000
+ L2CAP_CONF_UNACCEPT* = 0x00000001
+ L2CAP_CONF_REJECT* = 0x00000002
+ L2CAP_CONF_UNKNOWN* = 0x00000003
+ L2CAP_CONF_PENDING* = 0x00000004
+ L2CAP_CONF_EFS_REJECT* = 0x00000005
+
+type
+ l2cap_conf_opt* = object {.packed.}
+ `type`*: uint8
+ len*: uint8
+ val*: array[0, uint8]
+
+
+const
+ L2CAP_CONF_OPT_SIZE* = 2
+ L2CAP_CONF_MTU* = 0x00000001
+ L2CAP_CONF_FLUSH_TO* = 0x00000002
+ L2CAP_CONF_QOS* = 0x00000003
+ L2CAP_CONF_RFC* = 0x00000004
+ L2CAP_CONF_FCS* = 0x00000005
+ L2CAP_CONF_EFS* = 0x00000006
+ L2CAP_CONF_EWS* = 0x00000007
+ L2CAP_CONF_MAX_SIZE* = 22
+ L2CAP_MODE_BASIC* = 0x00000000
+ L2CAP_MODE_RETRANS* = 0x00000001
+ L2CAP_MODE_FLOWCTL* = 0x00000002
+ L2CAP_MODE_ERTM* = 0x00000003
+ L2CAP_MODE_STREAMING* = 0x00000004
+ L2CAP_SERVTYPE_NOTRAFFIC* = 0x00000000
+ L2CAP_SERVTYPE_BESTEFFORT* = 0x00000001
+ L2CAP_SERVTYPE_GUARANTEED* = 0x00000002
+
+type
+ l2cap_disconn_req* = object {.packed.}
+ dcid*: uint16
+ scid*: uint16
+
+
+const
+ L2CAP_DISCONN_REQ_SIZE* = 4
+
+type
+ l2cap_disconn_rsp* = object {.packed.}
+ dcid*: uint16
+ scid*: uint16
+
+
+const
+ L2CAP_DISCONN_RSP_SIZE* = 4
+
+type
+ l2cap_info_req* = object {.packed.}
+ `type`*: uint16
+
+
+const
+ L2CAP_INFO_REQ_SIZE* = 2
+
+type
+ l2cap_info_rsp* = object {.packed.}
+ `type`*: uint16
+ result*: uint16
+ data*: array[0, uint8]
+
+
+const
+ L2CAP_INFO_RSP_SIZE* = 4
+
+# info type
+
+const
+ L2CAP_IT_CL_MTU* = 0x00000001
+ L2CAP_IT_FEAT_MASK* = 0x00000002
+
+# info result
+
+const
+ L2CAP_IR_SUCCESS* = 0x00000000
+ L2CAP_IR_NOTSUPP* = 0x00000001
+
+type
+ l2cap_create_req* = object {.packed.}
+ psm*: uint16
+ scid*: uint16
+ id*: uint8
+
+
+const
+ L2CAP_CREATE_REQ_SIZE* = 5
+
+type
+ l2cap_create_rsp* = object {.packed.}
+ dcid*: uint16
+ scid*: uint16
+ result*: uint16
+ status*: uint16
+
+
+const
+ L2CAP_CREATE_RSP_SIZE* = 8
+
+type
+ l2cap_move_req* = object {.packed.}
+ icid*: uint16
+ id*: uint8
+
+
+const
+ L2CAP_MOVE_REQ_SIZE* = 3
+
+type
+ l2cap_move_rsp* = object {.packed.}
+ icid*: uint16
+ result*: uint16
+
+
+const
+ L2CAP_MOVE_RSP_SIZE* = 4
+
+type
+ l2cap_move_cfm* = object {.packed.}
+ icid*: uint16
+ result*: uint16
+
+
+const
+ L2CAP_MOVE_CFM_SIZE* = 4
+
+type
+ l2cap_move_cfm_rsp* = object {.packed.}
+ icid*: uint16
+
+
+const
+ L2CAP_MOVE_CFM_RSP_SIZE* = 2