Prevent Issue fixes
[platform/core/connectivity/bluetooth-frwk.git] / bt-oal / bluez_hal / src / bt-hal-gatt-client.c
index 61c4af9..cc5b5b8 100644 (file)
@@ -2854,40 +2854,40 @@ bt_status_t batchscan_read_reports(int client_if, int scan_mode)
 }
 
 const btgatt_client_interface_t btgatt_client_interface = {
-       btif_gattc_register_client,
-       btif_gattc_unregister_client,
-       scan,
-       btif_gattc_client_connect,
-       btif_gattc_client_disconnect,
-       refresh,
-       btif_gattc_client_search_service,
-       get_included_service,
-       btif_gattc_get_characteristic,
-       btif_gattc_get_descriptor,
-       btif_read_characteristic,
-       btif_write_characteristic,
-       btif_get_acquire_write_fd,
-       btif_get_acquire_notify_fd,
-       btif_read_descriptor,
-       btif_write_descriptor,
-       execute_write,
-       btif_register_for_notification,
-       btif_deregister_for_notification,
-       read_remote_rssi,
-       ota_fw_update,
-       get_device_type,
-       btif_gattc_conn_parameter_update,
-       test_command,
-       configure_mtu,
-       scan_filter_param_setup,
-       scan_filter_add_remove,
-       scan_filter_clear,
-       scan_filter_enable,
-       set_scan_parameters,
-       batchscan_cfg_storage,
-       batchscan_enb_batch_scan,
-       batchscan_dis_batch_scan,
-       batchscan_read_reports
+       .register_client = btif_gattc_register_client,
+       .unregister_client = btif_gattc_unregister_client,
+       .scan = scan,
+       .connect = btif_gattc_client_connect,
+       .disconnect = btif_gattc_client_disconnect,
+       .refresh = refresh,
+       .search_service = btif_gattc_client_search_service,
+       .get_included_service = get_included_service,
+       .get_characteristic = btif_gattc_get_characteristic,
+       .get_descriptor = btif_gattc_get_descriptor,
+       .read_characteristic = btif_read_characteristic,
+       .write_characteristic = btif_write_characteristic,
+       .acquire_write = btif_get_acquire_write_fd,
+       .acquire_notify = btif_get_acquire_notify_fd,
+       .read_descriptor = btif_read_descriptor,
+       .write_descriptor = btif_write_descriptor,
+       .execute_write = execute_write,
+       .register_for_notification = btif_register_for_notification,
+       .deregister_for_notification = btif_deregister_for_notification,
+       .read_remote_rssi = read_remote_rssi,
+       .ota_fw_update = ota_fw_update,
+       .get_device_type = get_device_type,
+       .conn_parameter_update = btif_gattc_conn_parameter_update,
+       .test_command = test_command,
+       .configure_mtu = configure_mtu,
+       .scan_filter_param_setup = scan_filter_param_setup,
+       .scan_filter_add_remove = scan_filter_add_remove,
+       .scan_filter_clear = scan_filter_clear,
+       .scan_filter_enable = scan_filter_enable,
+       .set_scan_parameters = set_scan_parameters,
+       .batchscan_cfg_storage = batchscan_cfg_storage,
+       .batchscan_enb_batch_scan = batchscan_enb_batch_scan,
+       .batchscan_dis_batch_scan = batchscan_dis_batch_scan,
+       .batchscan_read_reports = batchscan_read_reports
 };
 
 static hal_gattc_server_info_t *__bt_find_gatt_conn_info(bt_bdaddr_t *serv_addr)
@@ -3421,25 +3421,27 @@ void _bt_hal_handle_gattc_value_changed_event(int result, const char *char_handl
        _bt_hal_convert_addr_string_to_type(bd_addr.address, device_address);
        conn_info =  __bt_find_gatt_conn_info(&bd_addr);
 
-       //find service for notified char path
-       for (l = conn_info->gatt_list_services; l != NULL; l = g_slist_next(l)) {
-               svc_info = (hal_gattc_service_t*)l->data;
-               if (svc_info == NULL)
-                       continue;
-
-               /* find characteristic object path */
-               for (k = svc_info->gatt_list_chars; k != NULL; k = g_slist_next(k)) {
-                       char_info = (hal_gattc_char_t *)k->data;
-                       if (char_info == NULL)
+       if (conn_info != NULL) {
+               //find service for notified char path
+               for (l = conn_info->gatt_list_services; l != NULL; l = g_slist_next(l)) {
+                       svc_info = (hal_gattc_service_t*)l->data;
+                       if (svc_info == NULL)
                                continue;
 
-                       if (g_strcmp0(char_info->chr_path, char_handle) == 0) {
-                               DBG("Found char handle[%s]", char_info->chr_path);
+                       /* find characteristic object path */
+                       for (k = svc_info->gatt_list_chars; k != NULL; k = g_slist_next(k)) {
+                               char_info = (hal_gattc_char_t *)k->data;
+                               if (char_info == NULL)
+                                       continue;
+
+                               if (g_strcmp0(char_info->chr_path, char_handle) == 0) {
+                                       DBG("Found char handle[%s]", char_info->chr_path);
 
-                               //send event
-                               _bt_hal_send_value_changed_event(conn_info, svc_info,
-                                               char_info, char_value, len);
-                               return;
+                                       //send event
+                                       _bt_hal_send_value_changed_event(conn_info, svc_info,
+                                                       char_info, char_value, len);
+                                       return;
+                               }
                        }
                }
        }