31 uint16_t manufacturer;
38 int hci_open_dev(
int dev_id);
39 int hci_close_dev(
int dd);
40 int hci_send_cmd(
int dd, uint16_t ogf, uint16_t ocf, uint8_t plen,
void *param);
41 int hci_send_req(
int dd,
struct hci_request *req,
int timeout);
43 int hci_create_connection(
int dd,
const bdaddr_t *bdaddr, uint16_t ptype, uint16_t clkoffset, uint8_t rswitch, uint16_t *handle,
int to);
44 int hci_disconnect(
int dd, uint16_t handle, uint8_t reason,
int to);
46 int hci_inquiry(
int dev_id,
int len,
int num_rsp,
const uint8_t *lap, inquiry_info **ii,
long flags);
48 int hci_devba(
int dev_id, bdaddr_t *bdaddr);
49 int hci_devid(
const char *str);
51 int hci_read_local_name(
int dd,
int len,
char *name,
int to);
52 int hci_write_local_name(
int dd,
const char *name,
int to);
53 int hci_read_remote_name(
int dd,
const bdaddr_t *bdaddr,
int len,
char *name,
int to);
54 int hci_read_remote_name_with_clock_offset(
int dd,
const bdaddr_t *bdaddr, uint8_t pscan_rep_mode, uint16_t clkoffset,
int len,
char *name,
int to);
55 int hci_read_remote_name_cancel(
int dd,
const bdaddr_t *bdaddr,
int to);
56 int hci_read_remote_version(
int dd, uint16_t handle,
struct hci_version *ver,
int to);
57 int hci_read_remote_features(
int dd, uint16_t handle, uint8_t *features,
int to);
58 int hci_read_remote_ext_features(
int dd, uint16_t handle, uint8_t page, uint8_t *max_page, uint8_t *features,
int to);
59 int hci_read_clock_offset(
int dd, uint16_t handle, uint16_t *clkoffset,
int to);
60 int hci_read_local_version(
int dd,
struct hci_version *ver,
int to);
61 int hci_read_local_commands(
int dd, uint8_t *commands,
int to);
62 int hci_read_local_features(
int dd, uint8_t *features,
int to);
63 int hci_read_local_ext_features(
int dd, uint8_t page, uint8_t *max_page, uint8_t *features,
int to);
64 int hci_read_bd_addr(
int dd, bdaddr_t *bdaddr,
int to);
65 int hci_read_class_of_dev(
int dd, uint8_t *cls,
int to);
66 int hci_write_class_of_dev(
int dd, uint32_t cls,
int to);
67 int hci_read_voice_setting(
int dd, uint16_t *vs,
int to);
68 int hci_write_voice_setting(
int dd, uint16_t vs,
int to);
69 int hci_read_current_iac_lap(
int dd, uint8_t *num_iac, uint8_t *lap,
int to);
70 int hci_write_current_iac_lap(
int dd, uint8_t num_iac, uint8_t *lap,
int to);
71 int hci_read_stored_link_key(
int dd, bdaddr_t *bdaddr, uint8_t all,
int to);
72 int hci_write_stored_link_key(
int dd, bdaddr_t *bdaddr, uint8_t *key,
int to);
73 int hci_delete_stored_link_key(
int dd, bdaddr_t *bdaddr, uint8_t all,
int to);
74 int hci_authenticate_link(
int dd, uint16_t handle,
int to);
75 int hci_encrypt_link(
int dd, uint16_t handle, uint8_t encrypt,
int to);
76 int hci_change_link_key(
int dd, uint16_t handle,
int to);
77 int hci_switch_role(
int dd, bdaddr_t *bdaddr, uint8_t role,
int to);
78 int hci_park_mode(
int dd, uint16_t handle, uint16_t max_interval, uint16_t min_interval,
int to);
79 int hci_exit_park_mode(
int dd, uint16_t handle,
int to);
80 int hci_read_inquiry_scan_type(
int dd, uint8_t *type,
int to);
81 int hci_write_inquiry_scan_type(
int dd, uint8_t type,
int to);
82 int hci_read_inquiry_mode(
int dd, uint8_t *mode,
int to);
83 int hci_write_inquiry_mode(
int dd, uint8_t mode,
int to);
84 int hci_read_afh_mode(
int dd, uint8_t *mode,
int to);
85 int hci_write_afh_mode(
int dd, uint8_t mode,
int to);
86 int hci_read_ext_inquiry_response(
int dd, uint8_t *fec, uint8_t *data,
int to);
87 int hci_write_ext_inquiry_response(
int dd, uint8_t fec, uint8_t *data,
int to);
88 int hci_read_simple_pairing_mode(
int dd, uint8_t *mode,
int to);
89 int hci_write_simple_pairing_mode(
int dd, uint8_t mode,
int to);
90 int hci_read_local_oob_data(
int dd, uint8_t *hash, uint8_t *randomizer,
int to);
91 int hci_read_inq_response_tx_power_level(
int dd, int8_t *level,
int to);
92 int hci_read_inquiry_transmit_power_level(
int dd, int8_t *level,
int to);
93 int hci_write_inquiry_transmit_power_level(
int dd, int8_t level,
int to);
94 int hci_read_transmit_power_level(
int dd, uint16_t handle, uint8_t type, int8_t *level,
int to);
95 int hci_read_link_policy(
int dd, uint16_t handle, uint16_t *policy,
int to);
96 int hci_write_link_policy(
int dd, uint16_t handle, uint16_t policy,
int to);
97 int hci_read_link_supervision_timeout(
int dd, uint16_t handle, uint16_t *timeout,
int to);
98 int hci_write_link_supervision_timeout(
int dd, uint16_t handle, uint16_t timeout,
int to);
99 int hci_set_afh_classification(
int dd, uint8_t *map,
int to);
100 int hci_read_link_quality(
int dd, uint16_t handle, uint8_t *link_quality,
int to);
101 int hci_read_rssi(
int dd, uint16_t handle, int8_t *rssi,
int to);
102 int hci_read_afh_map(
int dd, uint16_t handle, uint8_t *mode, uint8_t *map,
int to);
103 int hci_read_clock(
int dd, uint16_t handle, uint8_t which, uint32_t *clock, uint16_t *accuracy,
int to);
105 int hci_le_set_scan_enable(
int dev_id, uint8_t enable, uint8_t filter_dup,
int to);
106 int hci_le_set_scan_parameters(
int dev_id, uint8_t type, uint16_t interval,
107 uint16_t window, uint8_t own_type,
108 uint8_t filter,
int to);
109 int hci_le_set_advertise_enable(
int dev_id, uint8_t enable,
int to);
110 int hci_le_create_conn(
int dd, uint16_t interval, uint16_t window,
111 uint8_t initiator_filter, uint8_t peer_bdaddr_type,
112 bdaddr_t peer_bdaddr, uint8_t own_bdaddr_type,
113 uint16_t min_interval, uint16_t max_interval,
114 uint16_t latency, uint16_t supervision_timeout,
115 uint16_t min_ce_length, uint16_t max_ce_length,
116 uint16_t *handle,
int to);
117 int hci_le_conn_update(
int dd, uint16_t handle, uint16_t min_interval,
118 uint16_t max_interval, uint16_t latency,
119 uint16_t supervision_timeout,
int to);
120 int hci_le_add_white_list(
int dd,
const bdaddr_t *bdaddr, uint8_t type,
int to);
121 int hci_le_rm_white_list(
int dd,
const bdaddr_t *bdaddr, uint8_t type,
int to);
122 int hci_le_read_white_list_size(
int dd, uint8_t *size,
int to);
123 int hci_le_clear_white_list(
int dd,
int to);
124 int hci_le_add_resolving_list(
int dd,
const bdaddr_t *bdaddr, uint8_t type,
125 uint8_t *peer_irk, uint8_t *local_irk,
int to);
126 int hci_le_rm_resolving_list(
int dd,
const bdaddr_t *bdaddr, uint8_t type,
int to);
127 int hci_le_clear_resolving_list(
int dd,
int to);
128 int hci_le_read_resolving_list_size(
int dd, uint8_t *size,
int to);
129 int hci_le_set_address_resolution_enable(
int dev_id, uint8_t enable,
int to);
130 int hci_le_read_remote_features(
int dd, uint16_t handle, uint8_t *features,
int to);
132 int hci_for_each_dev(
int flag,
int(*func)(
int dd,
int dev_id,
long arg),
long arg);
133 int hci_get_route(bdaddr_t *bdaddr);
135 char *hci_bustostr(
int bus);
136 char *hci_typetostr(
int type);
137 char *hci_dtypetostr(
int type);
138 char *hci_dflagstostr(uint32_t flags);
139 char *hci_ptypetostr(
unsigned int ptype);
140 int hci_strtoptype(
char *str,
unsigned int *val);
141 char *hci_scoptypetostr(
unsigned int ptype);
142 int hci_strtoscoptype(
char *str,
unsigned int *val);
143 char *hci_lptostr(
unsigned int ptype);
144 int hci_strtolp(
char *str,
unsigned int *val);
145 char *hci_lmtostr(
unsigned int ptype);
146 int hci_strtolm(
char *str,
unsigned int *val);
148 char *hci_cmdtostr(
unsigned int cmd);
149 char *hci_commandstostr(uint8_t *commands,
char *pref,
int width);
151 char *hci_vertostr(
unsigned int ver);
152 int hci_strtover(
char *str,
unsigned int *ver);
153 char *lmp_vertostr(
unsigned int ver);
154 int lmp_strtover(
char *str,
unsigned int *ver);
155 char *pal_vertostr(
unsigned int ver);
156 int pal_strtover(
char *str,
unsigned int *ver);
158 char *lmp_featurestostr(uint8_t *features,
char *pref,
int width);
160 static inline void hci_set_bit(
int nr,
void *addr)
162 *((uint32_t *) addr + (nr >> 5)) |= (1 << (nr & 31));
165 static inline void hci_clear_bit(
int nr,
void *addr)
167 *((uint32_t *) addr + (nr >> 5)) &= ~(1 << (nr & 31));
170 static inline int hci_test_bit(
int nr,
void *addr)
172 return *((uint32_t *) addr + (nr >> 5)) & (1 << (nr & 31));
176 static inline void hci_filter_clear(
struct hci_filter *f)
178 memset(f, 0,
sizeof(*f));
180 static inline void hci_filter_set_ptype(
int t,
struct hci_filter *f)
182 hci_set_bit((t == HCI_VENDOR_PKT) ? 0 : (t & HCI_FLT_TYPE_BITS), &f->type_mask);
184 static inline void hci_filter_clear_ptype(
int t,
struct hci_filter *f)
186 hci_clear_bit((t == HCI_VENDOR_PKT) ? 0 : (t & HCI_FLT_TYPE_BITS), &f->type_mask);
188 static inline int hci_filter_test_ptype(
int t,
struct hci_filter *f)
190 return hci_test_bit((t == HCI_VENDOR_PKT) ? 0 : (t & HCI_FLT_TYPE_BITS), &f->type_mask);
192 static inline void hci_filter_all_ptypes(
struct hci_filter *f)
194 memset((
void *) &f->type_mask, 0xff,
sizeof(f->type_mask));
196 static inline void hci_filter_set_event(
int e,
struct hci_filter *f)
198 hci_set_bit((e & HCI_FLT_EVENT_BITS), &f->event_mask);
200 static inline void hci_filter_clear_event(
int e,
struct hci_filter *f)
202 hci_clear_bit((e & HCI_FLT_EVENT_BITS), &f->event_mask);
204 static inline int hci_filter_test_event(
int e,
struct hci_filter *f)
206 return hci_test_bit((e & HCI_FLT_EVENT_BITS), &f->event_mask);
208 static inline void hci_filter_all_events(
struct hci_filter *f)
210 memset((
void *) f->event_mask, 0xff,
sizeof(f->event_mask));
212 static inline void hci_filter_set_opcode(
int opcode,
struct hci_filter *f)
216 static inline void hci_filter_clear_opcode(
struct hci_filter *f)
220 static inline int hci_filter_test_opcode(
int opcode,
struct hci_filter *f)
222 return (f->opcode == opcode);