1 #ifdef TIZEN_FEATURE_BLUEZ_MODIFY
4 BLE_ADV_TX_POWER_MIN = 0x00,
5 BLE_ADV_TX_POWER_LOW = 0x01,
6 BLE_ADV_TX_POWER_MID = 0x02,
7 BLE_ADV_TX_POWER_UPPER = 0x03,
8 BLE_ADV_TX_POWER_MAX = 0x04,
9 } adapter_le_tx_power_t;
15 } adapter_le_adv_inst_info_t;
18 uint16_t adv_int_min; /* minimum adv interval */
19 uint16_t adv_int_max; /* maximum adv interval */
20 uint8_t adv_type; /* adv event type (0x00 ~ 0x04) */
21 uint8_t channel_map; /* adv channel map (all channel = 0x07) */
22 uint8_t adv_filter_policy; /* advertising filter policy (0x00 ~ 0x04) */
23 adapter_le_tx_power_t tx_power; /* adv tx power */
24 } adapter_le_adv_param_t;
30 } adapter_le_scan_filter_action_type;
35 } adapter_vsc_le_addr_type;
38 TYPE_DEVICE_ADDRESS = 0x01,
39 TYPE_SERVICE_DATA_CHANGED = 0x02,
40 TYPE_SERVICE_UUID = 0x04,
41 TYPE_SOLICIT_UUID = 0x08,
42 TYPE_LOCAL_NAME = 0x10,
43 TYPE_MANUFACTURER_DATA = 0x20,
44 TYPE_SERVICE_DATA = 0x40,
45 } adapter_le_scan_filter_type;
47 #define BDADDR_BREDR 0x00
48 #define BDADDR_LE_PUBLIC 0x01
50 #define BROADCAST_ADDR_FILTER 0x01
51 #define SERVICE_DATA_CHANGE_FILTER 0x02
52 #define SERVICE_UUID_CHECK 0x04
53 #define SERVICE_SOLICITATION_UUID_CHECK 0x08
54 #define LOCAL_NAME_CHECK 0x10
55 #define MANUFACTURE_DATA_CHECK 0x20
56 #define SERVICE_DATA_CHECK 0x40
58 typedef uint16_t adapter_le_scan_filter_feature_t;
63 } adapter_le_scan_filter_logic_type;
69 } adapter_le_scan_filter_delivery_mode;
75 } adapter_le_uuid_len;
78 adapter_le_scan_filter_action_type action;
80 adapter_le_scan_filter_feature_t feature;
81 adapter_le_scan_filter_logic_type list_logic_type;
82 adapter_le_scan_filter_logic_type filter_logic_type;
83 uint8_t rssi_high_threshold;
84 adapter_le_scan_filter_delivery_mode delivery_mode;
85 uint16_t onfound_timeout;
86 uint8_t onfound_timeout_cnt;
87 uint8_t rssi_low_threshold;
88 uint16_t onlost_timeout;
89 }adapter_le_scan_filter_param_t;
92 adapter_le_scan_filter_action_type action;
94 bdaddr_t broadcaster_addr;
95 adapter_vsc_le_addr_type bdaddr_type;
96 } adapter_le_address_filter_params_t;
99 adapter_le_scan_filter_action_type action;
100 uint8_t filter_index;
103 adapter_le_uuid_len uuid_len;
104 }adapter_le_uuid_params_t;
107 adapter_le_scan_filter_action_type action;
108 uint8_t filter_index;
109 const char *local_name;
111 }adapter_le_local_name_params_t;
114 adapter_le_scan_filter_action_type action;
115 uint8_t filter_index;
117 uint16_t company_id_mask;
119 uint8_t *man_data_mask;
120 uint8_t man_data_len;
121 }adapter_le_manf_data_params_t;
124 adapter_le_scan_filter_action_type action;
125 uint8_t filter_index;
126 uint8_t *service_data;
127 uint8_t *service_data_mask;
128 uint8_t service_data_len;
129 }adapter_le_service_data_params_t;
131 /*****************************************************************************
132 ** Defentions for HCI Error Codes that are past in the events
134 #define HCI_SUCCESS 0x00
138 /*****************************************************************************
139 ** Vendor Specific Commands
143 #define OCF_BCM_LE_GET_VENDOR_CAP 0x0153 /* LE Get Vendor Capabilities */
145 #define OCF_BCM_LE_MULTI_ADV 0x0154 /* Multi adv OCF */
147 /* subcode for multi adv feature */
148 #define SUB_CMD_LE_MULTI_ADV_SET_PARAM 0x01
149 #define SUB_CMD_LE_MULTI_ADV_WRITE_ADV_DATA 0x02
150 #define SUB_CMD_LE_MULTI_ADV_WRITE_SCAN_RSP_DATA 0x03
151 #define SUB_CMD_LE_MULTI_ADV_SET_RANDOM_ADDR 0x04
152 #define SUB_CMD_LE_MULTI_ADV_ENB 0x05
154 /* APCF : Advertising Packet Content Filter feature */
155 #define OCF_BCM_LE_SCAN_FILTER 0x0157 /* Advertising filter OCF */
157 /* Sub codes for APCF */
158 #define SUB_CMD_LE_META_PF_ENABLE 0x00
159 #define SUB_CMD_LE_META_PF_FEAT_SEL 0x01
160 #define SUB_CMD_LE_META_PF_ADDR 0x02
161 #define SUB_CMD_LE_META_PF_UUID 0x03
162 #define SUB_CMD_LE_META_PF_SOL_UUID 0x04
163 #define SUB_CMD_LE_META_PF_LOCAL_NAME 0x05
164 #define SUB_CMD_LE_META_PF_MANU_DATA 0x06
165 #define SUB_CMD_LE_META_PF_SRVC_DATA 0x07
166 #define SUB_CMD_LE_META_PF_ALL 0x08
168 /* Offloaded resolution of private address */
169 #define OCF_BCM_LE_RPA_OFFLOAD 0x0155 /* RPA Offload OCF */
171 /* subcode for rpa offloading feature */
172 #define SUB_CMD_LE_ENABLE_OFFLOADING 0x01
173 #define SUB_CMD_LE_ADD_IRK_TO_LIST 0x02
174 #define SUB_CMD_LE_REMOVE_IRK_TO_LIST 0x03
175 #define SUB_CMD_LE_CLEAR_IRK_TO_LIST 0x04
176 #define SUB_CMD_LE_READ_IRK_TO_LIST 0x05
178 /*****************************************************************************
179 ** CP & RP for OCF_BCM_LE_GET_VENDOR_CAP
187 * (1 octet) status : Command complete status
188 * (1 octet) adv_inst_max : Num of advertisement instances supported
189 * (1 octet) rpa_offloading: BT chip capability of RPA
190 * (value 0 not capable, value 1 capable)
191 * If supported by chip, it needs enablement by host
192 * (2 octet) tot_scan_results_strg : Storage for scan results in bytes
193 * (1 octet) max_irk_list_sz : Num of IRK entries supported in f/w
194 * (1 octet) filter_support : Support Filtering in controller.
195 * 0 = Not supported / 1 = supported
196 * (1 octet) max_filter : Number of filters supported
197 * (1 octet) energy_support : Supports reporting of activity and energy info
198 * 0 = not capable, 1 = capable
199 * (1 octet) onlost_follow : Number of advertisers that can be analysed
200 * for onlost per filter
204 uint8_t adv_inst_max;
205 uint8_t rpa_offloading;
206 uint16_t tot_scan_results_strg;
207 uint8_t max_irk_list_sz;
208 uint8_t filter_support;
210 uint8_t energy_support;
211 uint8_t onlost_follow;
212 } __attribute__ ((packed)) apater_le_vsc_rp_get_vendor_cap;
216 /*****************************************************************************
217 ** CP & RP for OCF_BCM_LE_MULTI_ADV
223 * CP for OCF_BCM_LE_MULTI_ADV & SUB_CMD_LE_MULTI_ADV_SET_PARAM
225 * (1 octet) subcode : SUB_CMD_LE_MULTI_ADV_SET_PARAM
226 * (2 octet) adv_int_min : per spec
227 * (2 octet) adv_int_max : per spec
228 * (1 octet) adv_type : per spec
229 * (1 octet) bdaddr_type : per spec
230 * (6 octet) bdaddr : per spec
231 * (1 octet) direct_bdaddr_type : per spec
232 * (6 octet) direct_bdaddr : per spec
233 * (1 octet) channel_map : per spec
234 * (1 octet) adv_filter_policy : per spec
235 * (1 octet) inst_id : Specifies the applicability of the above parameters to an instance
236 * (1 octet) tx_power : Transmit_Power Unit - in dBm (signed integer) Range (70 to +20)
240 uint16_t adv_int_min;
241 uint16_t adv_int_max;
245 uint8_t direct_bdaddr_type;
246 bdaddr_t direct_bdaddr;
248 uint8_t adv_filter_policy;
251 } __attribute__ ((packed)) adapter_le_vsc_cp_set_multi_adv_params;
255 * CP for SUB_CMD_LE_MULTI_ADV_WRITE_ADV_DATA
256 * CP for SUB_CMD_LE_MULTI_ADV_WRITE_SCAN_RSP_DATA
258 * ( 1 octet) subcode : SUB_CMD_LE_MULTI_ADV_WRITE_ADV_DATA
259 * or SUB_CMD_LE_MULTI_ADV_WRITE_SCAN_RSP_DATA
260 * ( 1 octet) data_len : per spec
261 * (31 octet) data : per spec
262 * ( 1 octet) inst_id : Specifies the applicability of the above parameters to an instance.
269 } __attribute__ ((packed)) adapter_le_vsc_cp_set_multi_adv_data;
273 * CP for SUB_CMD_LE_MULTI_ADV_SET_RANDOM_ADDR
275 * (6 octet) b : Random address
276 * (1 octet) inst_id : Specifies the applicability of the above parameters
277 * to an instance. Instance 0 has special meaning this
278 * refers to std HCI instance.
284 } __attribute__ ((packed)) adapter_le_vsc_cp_set_random_address;
290 * (1 octet) status : Command complete status
291 * (1 octet) subcode : subcode of SUB_CMD_LE_MULTI_ADV_SET_RANDOM_ADDR
296 } __attribute__ ((packed)) apater_le_vsc_rp_set_random_address;
300 * CP for SUB_CMD_LE_MULTI_ADV_ENB
302 * (1 octet) subcode : SUB_CMD_LE_MULTI_ADV_ENB
303 * (1 octet) enable : When set to 1, it means enable, otherwise disable.
304 * (1 octet) inst_id : Specifies the applicability of the above parameters
305 * to an instance. Instance 0 has special meaning this
306 * refers to std HCI instance.
312 } __attribute__ ((packed)) adapter_le_vsc_cp_enable_multi_adv;
318 * (1 octet) status : Command complete status
319 * (1 octet) subcode : subcode of OCF_BCM_LE_MULTI_ADV
324 } __attribute__ ((packed)) apater_le_vsc_rp_multi_adv;
328 /*****************************************************************************
329 ** CP & RP for OCF_BCM_LE_SCAN_FILTER
334 /* CP for SUB_CMD_LE_META_PF_ENABLE */
338 } __attribute__ ((packed)) adapter_le_vsc_cp_enable_scan_filter;
340 /* RP for SUB_CMD_LE_META_PF_ENABLE */
345 } __attribute__ ((packed)) apater_le_vsc_rp_enable_scan_filter;
347 /* CP for SUB_CMD_LE_META_PF_FEAT_SEL */
351 uint8_t filter_index;
353 uint16_t feature_list_logic;
354 uint8_t filter_logic;
355 int8_t rssi_high_threshold;
356 uint8_t delivery_mode;
357 uint16_t onfound_timeout;
358 uint8_t onfound_timeout_cnt;
359 uint8_t rssi_low_thresh;
360 uint16_t onlost_timeout;
361 } __attribute__ ((packed)) adapter_le_vsc_cp_apcf_set_filter_params;
363 /* CP for SUB_CMD_LE_META_PF_ADDR */
367 uint8_t filter_index;
370 } __attribute__ ((packed))adapter_le_vsc_cp_address_scan_filter;
372 /* CP for SUB_CMD_LE_META_PF_UUID & SUB_CMD_LE_META_PF_SOL_UUID */
376 uint8_t filter_index;
377 uint8_t data[40]; /* UUID + UUID_MASK */
378 } __attribute__ ((packed))adapter_le_vsc_cp_service_uuid_scan_filter;
379 #define UUID_SCAN_FILTER_HEADER_SIZE 3
381 #define SCAN_FILTER_DATA_MAX_LEN 29
383 /* CP for SUB_CMD_LE_META_PF_LOCAL_NAME*/
387 uint8_t filter_index;
388 uint8_t name[SCAN_FILTER_DATA_MAX_LEN];
389 } __attribute__ ((packed)) adapter_le_vsc_cp_local_name_scan_filter;
390 #define NAME_SCAN_FILTER_HEADER_SIZE 3
392 /* CP for SUB_CMD_LE_META_PF_MANU_DATA*/
396 uint8_t filter_index;
397 uint8_t data[SCAN_FILTER_DATA_MAX_LEN * 2]; /* data + mask filed */
398 } __attribute__ ((packed)) adapter_le_vsc_cp_manf_data_scan_filter;
399 #define MANF_DATA_SCAN_FILTER_HEADER_SIZE 3
401 /* CP for SUB_CMD_LE_META_PF_SRVC_DATA*/
405 uint8_t filter_index;
406 uint8_t data[SCAN_FILTER_DATA_MAX_LEN * 2]; /* data + mask filed */
407 } __attribute__ ((packed)) adapter_le_vsc_cp_service_data_scan_filter;
408 #define SERVICE_DATA_SCAN_FILTER_HEADER_SIZE 3
410 /* RP for SUB_CMD_LE_META_PF_ADDR & SUB_CMD_LE_META_PF_FEAT_SEL &
411 SUB_CMD_LE_META_PF_UUID & SUB_CMD_LE_META_PF_SOL_UUID &
412 SUB_CMD_LE_META_PF_LOCAL_NAME & SUB_CMD_LE_META_PF_MANU_DATA &
413 SUB_CMD_LE_META_PF_SRVC_DATA */
418 uint8_t available_space;
419 } __attribute__ ((packed)) adapter_le_vsc_rp_apcf_set_scan_filter;
422 /*****************************************************************************
423 ** CP & RP for OCF_BCM_LE_RPA_OFFLOAD
429 * CP for SUB_CMD_ENABLE_RPA_OFFLOAD
431 * (1 octet) subcode : SUB_CMD_ENABLE_RPA_OFFLOAD (0x01)
432 * (2 octet) enable : When set to 1, it means enable, otherwise disable.
437 } __attribute__ ((packed)) adapter_le_vsc_cp_enable_rpa_offload;
439 /* RP for SUB_CMD_ENABLE_RPA_OFFLOAD */
443 } __attribute__ ((packed)) adapter_le_vsc_rp_enable_rpa_offload;
447 * CP for SUB_CMD_ADD_IRK_TO_LIST
449 * (1 octet) subcode : SUB_CMD_ADD_IRK_TO_LIST (0x02)
450 * (16 octet) le_irk : LE IRK (1st byte LSB)
451 * (1 octet) bdaddr_type : per spec
452 * (6 octet) bdaddr : per spec
459 } __attribute__ ((packed)) adapter_le_vsc_cp_add_irk_to_list;
463 * CP for SUB_CMD_REMOVE_IRK_TO_LIST
465 * (1 octet) subcode : SUB_CMD_REMOVE_IRK_TO_LIST (0x03)
466 * (16 octet) le_irk : LE IRK (1st byte LSB)
467 * (1 octet) bdaddr_type : per spec
468 * (6 octet) bdaddr : per spec
474 } __attribute__ ((packed)) adapter_le_vsc_cp_remove_irk_to_list;
476 /* RP for SUB_CMD_ADD_IRK_TO_LIST & SUB_CMD_REMOVE_IRK_TO_LIST */
480 uint8_t available_space;
481 } __attribute__ ((packed)) adapter_le_vsc_rp_irk_to_list;
484 /*****************************************************************************
489 /* Read supported BLE feature info from chipset */
490 gboolean adapter_le_read_ble_feature_info(void);
492 gboolean adapter_le_is_supported_multi_advertising(void);
494 gboolean adapter_le_is_supported_offloading(void);
496 int adapter_le_get_max_adv_instance(void);
498 int adapter_le_get_scan_filter_size(void);
500 gboolean adapter_le_set_multi_adv_params (adapter_le_adv_inst_info_t *p_inst,
501 adapter_le_adv_param_t *p_params);
503 gboolean adapter_le_set_multi_adv_data(uint8_t inst_id, gboolean is_scan_rsp,
504 uint8_t data_len, uint8_t *p_data);
506 gboolean adapter_le_set_random_address (struct btd_adapter *adapter,
507 const bdaddr_t *addr, uint8_t inst_id);
509 gboolean adapter_le_enable_multi_adv (struct btd_adapter *adapter,
510 gboolean enable, uint8_t inst_id);
512 gboolean adapter_le_enable_scan_filtering (gboolean enable);
514 gboolean adapter_le_set_scan_filter_params(adapter_le_scan_filter_param_t *params);
516 gboolean adapter_le_set_scan_filter_data(int client_if, int action,
517 int filt_type, int filter_index,
520 int uuid_len, uint8_t *p_uuid,
521 int uuid_mask_len, uint8_t *p_uuid_mask,
522 gchar *string, int addr_type,
523 int data_len, uint8_t *p_data,
524 int mask_len, uint8_t *p_mask);
525 gboolean adapter_le_clear_scan_filter_data(int client_if, int filter_index);
527 gboolean adapter_le_enable_offloading(gboolean enable);
529 gboolean adapter_le_add_irk_to_list(const uint8_t *le_irk, const bdaddr_t *bdaddr, uint8_t bdaddr_type);
531 gboolean adapter_le_remove_irk_to_list(const bdaddr_t *bdaddr, uint8_t bdaddr_type);
533 #endif /* TIZEN_FEATURE_BLUEZ_MODIFY */