uint8_t addr_type;
uint8_t adv_type;
int rssi;
- int data_len;
- uint8_t data[BT_HAL_ADV_DATA_MAX_SIZE * 2];
+ uint8_t adv_data[BT_HAL_ADV_DATA_MAX_SIZE];
+ int adv_data_len;
+ uint8_t scan_rsp_data[BT_HAL_ADV_DATA_MAX_SIZE];
+ int scan_rsp_data_len;
guint timer_id;
} bt_hal_le_adv_info_t;
/****************************************** Global Variables ******************************************/
-const btgatt_callbacks_t *bt_gatt_callbacks = NULL;
+static const btgatt_callbacks_t *bt_gatt_callbacks = NULL;
extern btgatt_client_interface_t btgatt_client_interface;
extern btgatt_server_interface_t btgatt_server_interface;
static void __bt_hal_handle_gatt_client_mtu_exchange_completed(void *buf, uint16_t len);
/*****************************************************************************************************/
-static bool interface_ready(void)
+bool _bt_hal_gatt_interface_ready(void)
{
return bt_gatt_callbacks != NULL;
}
DBG("acquire notify requested event recived");
if (bt_gatt_callbacks->server->request_acquire_notify_cb)
- bt_gatt_callbacks->server->request_acquire_notify_cb(ev->mtu, ev->conn_id, ev->trans_id, ev->char_handl);
+ bt_gatt_callbacks->server->request_acquire_notify_cb(ev->mtu, ev->conn_id, ev->trans_id, ev->char_handl, (bt_bdaddr_t *)ev->bdaddr);
}
static void __bt_hal_handle_gatt_server_indicate_confirmed(void *buf, uint16_t len)
{
DBG("GATT event 0x%x", message);
/* Check if GATT interface is Ready */
- if (!interface_ready())
+ if (!_bt_hal_gatt_interface_ready())
return;
switch (message) {
str2bt_bdaddr_t(adv_info->addr, &bd_addr);
if (bt_gatt_callbacks->client->scan_result_cb)
bt_gatt_callbacks->client->scan_result_cb(
- &bd_addr, adv_info->rssi, adv_info->data);
+ &bd_addr, adv_info->addr_type, adv_info->rssi,
+ adv_info->adv_data, adv_info->adv_data_len,
+ adv_info->scan_rsp_data, adv_info->scan_rsp_data_len);
}
static void __bt_handle_gatt_client_connected(void *buf, uint16_t len)
gatt_char_id.inst_id = ev->inst_id;
if (bt_gatt_callbacks->client->register_for_notification_cb)
- bt_gatt_callbacks->client->register_for_notification_cb(ev->client_if,
+ bt_gatt_callbacks->client->register_for_notification_cb(ev->conn_id,
ev->registered, ev->status, &gatt_srvc_id, &gatt_char_id);
}
adv_info = __bt_hal_get_adv_ind_info(address);
if (adv_info) {
/* Copy scan response data in data field and send event */
- memcpy(&(adv_info->data[adv_info->data_len]), ev->adv_data, data_len);
+ adv_info->scan_rsp_data_len = data_len;
+ memcpy(adv_info->scan_rsp_data, ev->adv_data, data_len);
__bt_hal_send_le_scan_result_event(adv_info);
adv_ind_list = g_slist_remove(adv_ind_list, adv_info);
if (adv_info->timer_id)
adv_info->addr_type = ev->addr_type;
adv_info->adv_type = ev->adv_type;
adv_info->rssi = ev->rssi;
- adv_info->data_len = data_len;
- memcpy(adv_info->data, ev->adv_data, data_len);
+ adv_info->adv_data_len = data_len;
+ memcpy(adv_info->adv_data, ev->adv_data, data_len);
#ifdef TIZEN_BT_HAL
if (_bt_hal_gatt_client_get_le_scan_type() == BT_GATTC_LE_SCAN_TYPE_PASSIVE) {
if (adv_info->adv_type == BT_LE_ADV_DIRECT_IND ||
adv_info->adv_type == BT_LE_ADV_NONCONN_IND) {
__bt_hal_send_le_scan_result_event(adv_info);
+ g_free(adv_info);
} else if (adv_info->adv_type == BT_LE_ADV_IND ||
adv_info->adv_type == BT_LE_ADV_SCAN_IND) {
static bt_status_t gatt_init(const btgatt_callbacks_t* callbacks)
{
bt_gatt_callbacks = callbacks;
+
DBG("Register A2DP Src events callback function");
_bt_hal_register_gatt_le_dbus_handler_cb(__bt_hal_gatt_events);
_bt_hal_register_gatt_server_handler_cb(__bt_hal_gatt_events);
_bt_hal_register_gatt_client_handler_cb(__bt_hal_gatt_events);
_bt_hal_register_event_handler_cb(HAL_GATT, __bt_hal_gatt_events);
+ _bt_hal_gatt_server_init();
+ _bt_hal_gatt_client_init();
+
return BT_STATUS_SUCCESS;
}