1f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann/* 2f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann BlueZ - Bluetooth protocol stack for Linux 3f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann Copyright (C) 2000-2001 Qualcomm Incorporated 4f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 5f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> 6f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 7f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann This program is free software; you can redistribute it and/or modify 8f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann it under the terms of the GNU General Public License version 2 as 9f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann published by the Free Software Foundation; 10f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 11f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 12f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 13f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. 14f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY 15f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES 16f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 17f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 18f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 19f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 20f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, 21f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS 22f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann SOFTWARE IS DISCLAIMED. 23f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann*/ 24f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 25f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#ifndef __HCI_SOCK_H 26f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define __HCI_SOCK_H 27f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 28f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann/* Socket options */ 29f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCI_DATA_DIR 1 30f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCI_FILTER 2 31f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCI_TIME_STAMP 3 32f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 33f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann/* CMSG flags */ 34f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCI_CMSG_DIR 0x0001 35f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCI_CMSG_TSTAMP 0x0002 36f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 37f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmannstruct sockaddr_hci { 38f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann sa_family_t hci_family; 39f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann unsigned short hci_dev; 40f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann unsigned short hci_channel; 41f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann}; 42f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCI_DEV_NONE 0xffff 43f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 44f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCI_CHANNEL_RAW 0 45f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCI_CHANNEL_USER 1 46f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCI_CHANNEL_MONITOR 2 47f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCI_CHANNEL_CONTROL 3 48f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 49f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmannstruct hci_filter { 50f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann unsigned long type_mask; 51f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann unsigned long event_mask[2]; 52f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __le16 opcode; 53f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann}; 54f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 55f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmannstruct hci_ufilter { 56f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u32 type_mask; 57f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u32 event_mask[2]; 58f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __le16 opcode; 59f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann}; 60f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 61f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCI_FLT_TYPE_BITS 31 62f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCI_FLT_EVENT_BITS 63 63f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCI_FLT_OGF_BITS 63 64f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCI_FLT_OCF_BITS 127 65f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 66f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann/* Ioctl defines */ 67f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCIDEVUP _IOW('H', 201, int) 68f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCIDEVDOWN _IOW('H', 202, int) 69f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCIDEVRESET _IOW('H', 203, int) 70f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCIDEVRESTAT _IOW('H', 204, int) 71f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 72f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCIGETDEVLIST _IOR('H', 210, int) 73f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCIGETDEVINFO _IOR('H', 211, int) 74f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCIGETCONNLIST _IOR('H', 212, int) 75f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCIGETCONNINFO _IOR('H', 213, int) 76f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCIGETAUTHINFO _IOR('H', 215, int) 77f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 78f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCISETRAW _IOW('H', 220, int) 79f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCISETSCAN _IOW('H', 221, int) 80f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCISETAUTH _IOW('H', 222, int) 81f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCISETENCRYPT _IOW('H', 223, int) 82f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCISETPTYPE _IOW('H', 224, int) 83f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCISETLINKPOL _IOW('H', 225, int) 84f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCISETLINKMODE _IOW('H', 226, int) 85f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCISETACLMTU _IOW('H', 227, int) 86f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCISETSCOMTU _IOW('H', 228, int) 87f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 88f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCIBLOCKADDR _IOW('H', 230, int) 89f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCIUNBLOCKADDR _IOW('H', 231, int) 90f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 91f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCIINQUIRY _IOR('H', 240, int) 92f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 93f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann/* Ioctl requests structures */ 94f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmannstruct hci_dev_stats { 95f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u32 err_rx; 96f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u32 err_tx; 97f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u32 cmd_tx; 98f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u32 evt_rx; 99f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u32 acl_tx; 100f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u32 acl_rx; 101f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u32 sco_tx; 102f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u32 sco_rx; 103f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u32 byte_rx; 104f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u32 byte_tx; 105f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann}; 106f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 107f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmannstruct hci_dev_info { 108f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u16 dev_id; 109f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann char name[8]; 110f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 111f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann bdaddr_t bdaddr; 112f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 113f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u32 flags; 114f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u8 type; 115f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 116f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u8 features[8]; 117f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 118f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u32 pkt_type; 119f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u32 link_policy; 120f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u32 link_mode; 121f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 122f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u16 acl_mtu; 123f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u16 acl_pkts; 124f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u16 sco_mtu; 125f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u16 sco_pkts; 126f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 127f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann struct hci_dev_stats stat; 128f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann}; 129f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 130f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmannstruct hci_conn_info { 131f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u16 handle; 132f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann bdaddr_t bdaddr; 133f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u8 type; 134f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u8 out; 135f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u16 state; 136f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u32 link_mode; 137f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann}; 138f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 139f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmannstruct hci_dev_req { 140f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u16 dev_id; 141f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u32 dev_opt; 142f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann}; 143f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 144f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmannstruct hci_dev_list_req { 145f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u16 dev_num; 146f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann struct hci_dev_req dev_req[0]; /* hci_dev_req structures */ 147f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann}; 148f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 149f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmannstruct hci_conn_list_req { 150f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u16 dev_id; 151f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u16 conn_num; 152f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann struct hci_conn_info conn_info[0]; 153f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann}; 154f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 155f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmannstruct hci_conn_info_req { 156f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann bdaddr_t bdaddr; 157f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u8 type; 158f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann struct hci_conn_info conn_info[0]; 159f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann}; 160f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 161f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmannstruct hci_auth_info_req { 162f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann bdaddr_t bdaddr; 163f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u8 type; 164f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann}; 165f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 166f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmannstruct hci_inquiry_req { 167f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u16 dev_id; 168f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u16 flags; 169f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u8 lap[3]; 170f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u8 length; 171f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann __u8 num_rsp; 172f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann}; 173f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define IREQ_CACHE_FLUSH 0x0001 174f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann 175f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#endif /* __HCI_SOCK_H */ 176