Update the RFCOMM server connection information
[platform/core/connectivity/bluetooth-frwk.git] / bt-api / bt-rfcomm-server.c
index 1365077..1e6e1c6 100644 (file)
 #define BLUETOOTH_SOCK_CONNECT_INFO_LEN 16
 #define BATTERY_MONITOR_RFCOMM_INTERVAL 5
 
+static int __rfcomm_send_conn_info(gboolean connected, int client_fd)
+{
+       int result;
+
+       if (bluetooth_get_battery_monitor_state() == 0) {
+               BT_DBG("Battery monitor state is off");
+               return BLUETOOTH_ERROR_NONE;
+       }
+
+       BT_INIT_PARAMS();
+       BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
+
+       g_array_append_vals(in_param1, &connected, sizeof(gboolean));
+       g_array_append_vals(in_param2, &client_fd, sizeof(int));
+
+       result = _bt_send_request(BT_BLUEZ_SERVICE, BT_RFCOMM_SERVER_UPDATE_CONNECTION_INFO,
+               in_param1, in_param2, in_param3, in_param4, &out_param);
+
+       BT_DBG("result: %x", result);
+
+       BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
+
+       return result;
+}
+
 #ifdef TIZEN_FEATURE_BT_RFCOMM_DIRECT
 
 static GSList *rfcomm_nodes;
@@ -197,6 +222,9 @@ static void __connected_cb(rfcomm_info_t *info, rfcomm_conn_t *conn,
 
        BT_INFO_C("### Connected [RFCOMM Server]");
 
+       if (__rfcomm_send_conn_info(TRUE, conn_info.socket_fd) != BLUETOOTH_ERROR_NONE)
+               BT_ERR("Fail to send the connection info");
+
        _bt_common_event_cb(BLUETOOTH_EVENT_RFCOMM_CONNECTED,
                        BLUETOOTH_ERROR_NONE, &conn_info,
                        event_info->cb, event_info->user_data);
@@ -234,6 +262,9 @@ static void __rfcomm_server_disconnect_conn(rfcomm_conn_t *conn,
        BT_INFO("Disconnected FD [%d]", conn->fd);
        disconn_info.socket_fd = conn->fd;
 
+       if (__rfcomm_send_conn_info(FALSE, disconn_info.socket_fd) != BLUETOOTH_ERROR_NONE)
+               BT_ERR("Fail to send the connection info");
+
        _bt_common_event_cb(BLUETOOTH_EVENT_RFCOMM_DISCONNECTED,
                        BLUETOOTH_ERROR_NONE, &disconn_info,
                        event_info->cb, event_info->user_data);