case BLUETOOTH_EVENT_GATT_CLIENT_DISCONNECTED: {
bt_gatt_client_s *client_s;
bt_gatt_connection_state_changed_cb cb = NULL;
+
+ const GSList *server_list = NULL;
+ bt_gatt_server_s *server = NULL;
+
+ server_list = _bt_gatt_get_server_list();
+ if (server_list)
+ server = (bt_gatt_server_s *)server_list->data;
+
BT_INFO("BLUETOOTH_EVENT_GATT_CLIENT_DISCONNECTED");
_bt_convert_address_to_string(&device_addr,
(bluetooth_device_address_t *)(param->param_data));
/* TDS Seeker */
_bt_tds_update_seeker_connection_state_changed(param->result, device_addr, FALSE);
- if (client_s && client_s->client_connection_change_cb)
+ /* Handle Client disconnection event in case of Server */
+ if (server && server->server_connection_change_cb)
+ server->server_connection_change_cb(_bt_get_error_code(param->result), FALSE, device_addr,
+ server->connection_change_user_data);
+
+ if (client_s && client_s->client_connection_change_cb) {
client_s->client_connection_change_cb(_bt_get_error_code(param->result), FALSE, device_addr,
client_s->connection_change_user_data);
+ client_s->client_connection_change_cb = NULL;
+ client_s->connection_change_user_data = NULL;
+ }
else {
if (event_index >= 0)
cb = bt_event_slot_container[event_index].callback;
bt_gatt_client_s *client_h = (bt_gatt_client_s *)client;
+ BT_CHECK_GATT_CLIENT_SUPPORT();
+ BT_CHECK_INIT_STATUS();
+ BT_CHECK_INPUT_PARAMETER(client);
+ BT_CHECK_INPUT_PARAMETER(callback);
+ BT_CHECK_INPUT_PARAMETER(client_h->remote_address);
+
bt_gatt_client_s *client_s;
BT_INFO("Address [%s] Auto Connect [%d]",
client_h->remote_address, auto_connect);
- BT_CHECK_GATT_CLIENT_SUPPORT();
- BT_CHECK_INIT_STATUS();
- BT_CHECK_INPUT_PARAMETER(client_h->remote_address);
_bt_convert_address_to_hex(&bd_addr, client_h->remote_address);
client_h->client_connection_change_cb = callback;
BT_CHECK_GATT_CLIENT_SUPPORT();
BT_CHECK_INIT_STATUS();
+ BT_CHECK_INPUT_PARAMETER(client);
BT_CHECK_INPUT_PARAMETER(client_h->remote_address);
_bt_convert_address_to_hex(&bd_addr, client_h->remote_address);
BT_CHECK_GATT_SUPPORT();
BT_CHECK_INIT_STATUS();
BT_CHECK_INPUT_PARAMETER(callback);
+ BT_CHECK_INPUT_PARAMETER(server);
BT_INFO("Connection Change callback registered");
server_s->server_connection_change_cb = callback;
BT_CHECK_GATT_SUPPORT();
BT_CHECK_INIT_STATUS();
+ BT_CHECK_INPUT_PARAMETER(server);
BT_INFO("Connection Changed callback unregistered");
server_s->server_connection_change_cb = NULL;