Modify build feature names as Tizen 3.0 build option naming rule
[platform/core/connectivity/bluetooth-frwk.git] / bt-api / bt-rfcomm-server.c
index a2794de..4b5b837 100644 (file)
@@ -16,7 +16,7 @@
  */
 
 #include <string.h>
-#ifdef RFCOMM_DIRECT
+#ifdef TIZEN_FEATURE_BT_RFCOMM_DIRECT
 #include <gio/gio.h>
 #include <gio/gunixfdlist.h>
 #include <sys/socket.h>
 #include "bt-request-sender.h"
 #include "bt-event-handler.h"
 
-#ifdef TIZEN_DPM_ENABLE
+#ifdef TIZEN_FEATURE_BT_DPM
 #include "bt-dpm.h"
 #endif
 
-#ifdef RFCOMM_DIRECT
+#ifdef TIZEN_FEATURE_BT_RFCOMM_DIRECT
 
 static GSList *rfcomm_nodes;
 
@@ -355,6 +355,20 @@ int new_server_connection(const char *path, int fd, bluetooth_device_address_t *
        if (info == NULL)
                return -1;
 
+#ifdef TIZEN_FEATURE_BT_DPM
+       if (_bt_check_dpm(BT_DPM_SPP, NULL) == BT_DPM_RESTRICTED) {
+               char addr_str[20];
+
+               BT_ERR("Not allow to use SPP profile");
+
+               close(fd);
+               _bt_convert_addr_type_to_string(addr_str, addr->addr);
+               _bt_disconnect_profile(addr_str, info->uuid, NULL,NULL);
+
+               return -1;
+       }
+#endif
+
        conn = g_new0(rfcomm_conn_t, 1);
        conn->fd = fd;
        memcpy(&conn->addr, addr, sizeof(bluetooth_device_address_t));
@@ -454,18 +468,53 @@ void free_rfcomm_info(rfcomm_info_t *info)
        g_free(info);
 }
 
-void _bt_rfcomm_server_free_all()
+void _bt_rfcomm_server_free_all(void)
 {
        BT_DBG("Free all the servers");
 
        g_slist_free_full(rfcomm_nodes, (GDestroyNotify)free_rfcomm_info);
        rfcomm_nodes = NULL;
 }
+
+void _bt_rfcomm_server_disconnect_all(void)
+{
+       GSList *server;
+       GSList *conn;
+       char addr[20];
+
+       BT_INFO("### Disconnect all RFCOMM server connections");
+
+       for (server = rfcomm_nodes; server; ) {
+               rfcomm_info_t *info = server->data;
+
+               for (conn = info->rfcomm_conns; conn; conn = conn->next) {
+                       rfcomm_conn_t *conn_info = conn->data;
+
+                       if (conn_info == NULL)
+                               continue;
+
+                       if (conn_info->watch_id == 0 || conn_info->disconnected)
+                               continue;
+
+                       close(conn_info->fd);
+                       conn_info->disconnected = TRUE;
+
+                       _bt_convert_addr_type_to_string(addr,
+                                                       conn_info->addr.addr);
+                       _bt_disconnect_profile(addr, info->uuid, NULL,NULL);
+               }
+
+               server = server->next;
+               __rfcomm_server_disconnect(info);
+       }
+
+       return;
+}
 #endif
 
 BT_EXPORT_API int bluetooth_rfcomm_create_socket(const char *uuid)
 {
-#ifdef RFCOMM_DIRECT
+#ifdef TIZEN_FEATURE_BT_RFCOMM_DIRECT
        rfcomm_info_t *info;
 #else
        int result;
@@ -483,14 +532,14 @@ BT_EXPORT_API int bluetooth_rfcomm_create_socket(const char *uuid)
                return BLUETOOTH_ERROR_PERMISSION_DEINED;
        }
 
-#ifdef TIZEN_DPM_ENABLE
+#ifdef TIZEN_FEATURE_BT_DPM
        if (_bt_check_dpm(BT_DPM_SPP, NULL) == BT_DPM_RESTRICTED) {
                BT_ERR("Not allow to use SPP profile");
                return BLUETOOTH_ERROR_DEVICE_POLICY_RESTRICTION;
        }
 #endif
 
-#ifdef RFCOMM_DIRECT
+#ifdef TIZEN_FEATURE_BT_RFCOMM_DIRECT
        BT_INFO("<<<<<<<<< RFCOMM Create socket from app >>>>>>>>>");
        info = __register_method();
        if (info == NULL)
@@ -525,7 +574,7 @@ BT_EXPORT_API int bluetooth_rfcomm_create_socket(const char *uuid)
 
 BT_EXPORT_API int bluetooth_rfcomm_create_socket_ex(const char *uuid, const char *bus_name, const char *path)
 {
-#ifdef RFCOMM_DIRECT
+#ifdef TIZEN_FEATURE_BT_RFCOMM_DIRECT
        rfcomm_info_t *info;
 
        BT_CHECK_ENABLED(return);
@@ -538,7 +587,7 @@ BT_EXPORT_API int bluetooth_rfcomm_create_socket_ex(const char *uuid, const char
                return BLUETOOTH_ERROR_PERMISSION_DEINED;
        }
 
-#ifdef TIZEN_DPM_ENABLE
+#ifdef TIZEN_FEATURE_BT_DPM
        if (_bt_check_dpm(BT_DPM_SPP, NULL) == BT_DPM_RESTRICTED) {
                BT_ERR("Not allow to use SPP profile");
                return BLUETOOTH_ERROR_DEVICE_POLICY_RESTRICTION;
@@ -561,7 +610,7 @@ BT_EXPORT_API int bluetooth_rfcomm_create_socket_ex(const char *uuid, const char
 
 BT_EXPORT_API int bluetooth_rfcomm_remove_socket(int id)
 {
-#ifdef RFCOMM_DIRECT
+#ifdef TIZEN_FEATURE_BT_RFCOMM_DIRECT
        rfcomm_info_t *info;
 #else
        int result;
@@ -580,7 +629,7 @@ BT_EXPORT_API int bluetooth_rfcomm_remove_socket(int id)
                return BLUETOOTH_ERROR_INVALID_PARAM;
        }
 
-#ifdef RFCOMM_DIRECT
+#ifdef TIZEN_FEATURE_BT_RFCOMM_DIRECT
        BT_INFO("RFCOMM Remove socket request from app, ID [%d]", id);
 
        info = __find_rfcomm_info_with_id(id);
@@ -616,7 +665,7 @@ BT_EXPORT_API int bluetooth_rfcomm_remove_socket(int id)
 
 BT_EXPORT_API int bluetooth_rfcomm_remove_socket_ex(const char *uuid)
 {
-#ifdef RFCOMM_DIRECT
+#ifdef TIZEN_FEATURE_BT_RFCOMM_DIRECT
        rfcomm_info_t *info;
 
        BT_CHECK_ENABLED(return);
@@ -647,7 +696,7 @@ BT_EXPORT_API int bluetooth_rfcomm_remove_socket_ex(const char *uuid)
 
 BT_EXPORT_API int bluetooth_rfcomm_server_disconnect(int socket_fd)
 {
-#ifdef RFCOMM_DIRECT
+#ifdef TIZEN_FEATURE_BT_RFCOMM_DIRECT
        rfcomm_info_t *info;
        rfcomm_conn_t *conn;
 
@@ -771,7 +820,7 @@ BT_EXPORT_API int bluetooth_rfcomm_server_is_connected(const bluetooth_device_ad
 
 BT_EXPORT_API int bluetooth_rfcomm_listen_and_accept(int id, int max_pending_connection)
 {
-#ifdef RFCOMM_DIRECT
+#ifdef TIZEN_FEATURE_BT_RFCOMM_DIRECT
        rfcomm_info_t *info;
 #else
        int result;
@@ -784,14 +833,14 @@ BT_EXPORT_API int bluetooth_rfcomm_listen_and_accept(int id, int max_pending_con
                return BLUETOOTH_ERROR_INVALID_PARAM;
        }
 
-#ifdef TIZEN_DPM_ENABLE
+#ifdef TIZEN_FEATURE_BT_DPM
        if (_bt_check_dpm(BT_DPM_SPP, NULL) == BT_DPM_RESTRICTED) {
                BT_ERR("Not allow to use SPP profile");
                return BLUETOOTH_ERROR_DEVICE_POLICY_RESTRICTION;
        }
 #endif
 
-#ifdef RFCOMM_DIRECT
+#ifdef TIZEN_FEATURE_BT_RFCOMM_DIRECT
        BT_INFO("RFCOMM Listen & accept from app");
 
        info = __find_rfcomm_info_with_id(id);
@@ -835,12 +884,12 @@ BT_EXPORT_API int bluetooth_rfcomm_listen_and_accept_ex(const char *uuid,
                                        int max_pending_connection,
                                        const char *bus_name, const char *path)
 {
-#ifdef RFCOMM_DIRECT
+#ifdef TIZEN_FEATURE_BT_RFCOMM_DIRECT
        rfcomm_info_t *info;
 
        BT_CHECK_ENABLED(return);
 
-#ifdef TIZEN_DPM_ENABLE
+#ifdef TIZEN_FEATURE_BT_DPM
        if (_bt_check_dpm(BT_DPM_SPP, NULL) == BT_DPM_RESTRICTED) {
                BT_ERR("Not allow to use SPP profile");
                return BLUETOOTH_ERROR_DEVICE_POLICY_RESTRICTION;
@@ -874,7 +923,7 @@ BT_EXPORT_API int bluetooth_rfcomm_listen_and_accept_ex(const char *uuid,
 
 BT_EXPORT_API int bluetooth_rfcomm_listen(int id, int max_pending_connection)
 {
-#ifdef RFCOMM_DIRECT
+#ifdef TIZEN_FEATURE_BT_RFCOMM_DIRECT
        rfcomm_info_t *info;
 #else
        int result;
@@ -887,14 +936,14 @@ BT_EXPORT_API int bluetooth_rfcomm_listen(int id, int max_pending_connection)
                return BLUETOOTH_ERROR_INVALID_PARAM;
        }
 
-#ifdef TIZEN_DPM_ENABLE
+#ifdef TIZEN_FEATURE_BT_DPM
        if (_bt_check_dpm(BT_DPM_SPP, NULL) == BT_DPM_RESTRICTED) {
                BT_ERR("Not allow to use SPP profile");
                return BLUETOOTH_ERROR_DEVICE_POLICY_RESTRICTION;
        }
 #endif
 
-#ifdef RFCOMM_DIRECT
+#ifdef TIZEN_FEATURE_BT_RFCOMM_DIRECT
        BT_INFO("RFCOMM Listen");
 
        info = __find_rfcomm_info_with_id(id);
@@ -947,7 +996,7 @@ BT_EXPORT_API int bluetooth_rfcomm_accept_connection(int server_fd)
 
        BT_CHECK_ENABLED(return);
 
-#ifdef TIZEN_DPM_ENABLE
+#ifdef TIZEN_FEATURE_BT_DPM
        if (_bt_check_dpm(BT_DPM_SPP, NULL) == BT_DPM_RESTRICTED) {
                BT_ERR("Not allow to use SPP profile");
                return BLUETOOTH_ERROR_DEVICE_POLICY_RESTRICTION;