1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 
  13 
  14 
  15 
  16 
  17 
  18 
  19 
  20 
  21 
  22 
  23 
  24 
  25 #ifndef __HCI_SOCK_H
  26 #define __HCI_SOCK_H
  27 
  28 
  29 #define HCI_DATA_DIR    1
  30 #define HCI_FILTER      2
  31 #define HCI_TIME_STAMP  3
  32 
  33 
  34 #define HCI_CMSG_DIR    0x0001
  35 #define HCI_CMSG_TSTAMP 0x0002
  36 
  37 struct sockaddr_hci {
  38         sa_family_t    hci_family;
  39         unsigned short hci_dev;
  40         unsigned short hci_channel;
  41 };
  42 #define HCI_DEV_NONE    0xffff
  43 
  44 #define HCI_CHANNEL_RAW         0
  45 #define HCI_CHANNEL_USER        1
  46 #define HCI_CHANNEL_MONITOR     2
  47 #define HCI_CHANNEL_CONTROL     3
  48 #define HCI_CHANNEL_LOGGING     4
  49 
  50 struct hci_filter {
  51         unsigned long type_mask;
  52         unsigned long event_mask[2];
  53         __le16 opcode;
  54 };
  55 
  56 struct hci_ufilter {
  57         __u32  type_mask;
  58         __u32  event_mask[2];
  59         __le16 opcode;
  60 };
  61 
  62 #define HCI_FLT_TYPE_BITS       31
  63 #define HCI_FLT_EVENT_BITS      63
  64 #define HCI_FLT_OGF_BITS        63
  65 #define HCI_FLT_OCF_BITS        127
  66 
  67 
  68 #define HCIDEVUP        _IOW('H', 201, int)
  69 #define HCIDEVDOWN      _IOW('H', 202, int)
  70 #define HCIDEVRESET     _IOW('H', 203, int)
  71 #define HCIDEVRESTAT    _IOW('H', 204, int)
  72 
  73 #define HCIGETDEVLIST   _IOR('H', 210, int)
  74 #define HCIGETDEVINFO   _IOR('H', 211, int)
  75 #define HCIGETCONNLIST  _IOR('H', 212, int)
  76 #define HCIGETCONNINFO  _IOR('H', 213, int)
  77 #define HCIGETAUTHINFO  _IOR('H', 215, int)
  78 
  79 #define HCISETRAW       _IOW('H', 220, int)
  80 #define HCISETSCAN      _IOW('H', 221, int)
  81 #define HCISETAUTH      _IOW('H', 222, int)
  82 #define HCISETENCRYPT   _IOW('H', 223, int)
  83 #define HCISETPTYPE     _IOW('H', 224, int)
  84 #define HCISETLINKPOL   _IOW('H', 225, int)
  85 #define HCISETLINKMODE  _IOW('H', 226, int)
  86 #define HCISETACLMTU    _IOW('H', 227, int)
  87 #define HCISETSCOMTU    _IOW('H', 228, int)
  88 
  89 #define HCIBLOCKADDR    _IOW('H', 230, int)
  90 #define HCIUNBLOCKADDR  _IOW('H', 231, int)
  91 
  92 #define HCIINQUIRY      _IOR('H', 240, int)
  93 
  94 
  95 struct hci_dev_stats {
  96         __u32 err_rx;
  97         __u32 err_tx;
  98         __u32 cmd_tx;
  99         __u32 evt_rx;
 100         __u32 acl_tx;
 101         __u32 acl_rx;
 102         __u32 sco_tx;
 103         __u32 sco_rx;
 104         __u32 byte_rx;
 105         __u32 byte_tx;
 106 };
 107 
 108 struct hci_dev_info {
 109         __u16 dev_id;
 110         char  name[8];
 111 
 112         bdaddr_t bdaddr;
 113 
 114         __u32 flags;
 115         __u8  type;
 116 
 117         __u8  features[8];
 118 
 119         __u32 pkt_type;
 120         __u32 link_policy;
 121         __u32 link_mode;
 122 
 123         __u16 acl_mtu;
 124         __u16 acl_pkts;
 125         __u16 sco_mtu;
 126         __u16 sco_pkts;
 127 
 128         struct hci_dev_stats stat;
 129 };
 130 
 131 struct hci_conn_info {
 132         __u16    handle;
 133         bdaddr_t bdaddr;
 134         __u8     type;
 135         __u8     out;
 136         __u16    state;
 137         __u32    link_mode;
 138 };
 139 
 140 struct hci_dev_req {
 141         __u16  dev_id;
 142         __u32  dev_opt;
 143 };
 144 
 145 struct hci_dev_list_req {
 146         __u16  dev_num;
 147         struct hci_dev_req dev_req[0];  
 148 };
 149 
 150 struct hci_conn_list_req {
 151         __u16  dev_id;
 152         __u16  conn_num;
 153         struct hci_conn_info conn_info[0];
 154 };
 155 
 156 struct hci_conn_info_req {
 157         bdaddr_t bdaddr;
 158         __u8     type;
 159         struct   hci_conn_info conn_info[0];
 160 };
 161 
 162 struct hci_auth_info_req {
 163         bdaddr_t bdaddr;
 164         __u8     type;
 165 };
 166 
 167 struct hci_inquiry_req {
 168         __u16 dev_id;
 169         __u16 flags;
 170         __u8  lap[3];
 171         __u8  length;
 172         __u8  num_rsp;
 173 };
 174 #define IREQ_CACHE_FLUSH 0x0001
 175 
 176 #endif