LE CoC: Fix socket events not coming in client role 25/272425/1
authorAyush Garg <ayush.garg@samsung.com>
Wed, 16 Mar 2022 07:25:18 +0000 (12:55 +0530)
committerAyush Garg <ayush.garg@samsung.com>
Wed, 16 Mar 2022 07:25:18 +0000 (12:55 +0530)
This patch will add the support for registering
L2CAP LE socket client events.

Change-Id: If991e7f5ed3cb2b79070fbc6daceff47482b70fe
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
bt-api/bt-common.c
bt-api/bt-event-handler.c
bt-service/services/l2cap_le/bt-service-l2cap-le.c

index d50cb00..5132176 100644 (file)
@@ -2579,6 +2579,9 @@ BT_EXPORT_API int bluetooth_register_callback(bluetooth_cb_func_ptr callback_ptr
                ret = _bt_register_event(BT_HDP_EVENT, (void *)callback_ptr, user_data);
                if (ret != BLUETOOTH_ERROR_NONE)
                        goto fail;
+               ret = _bt_register_event(BT_L2CAP_LE_CLIENT_EVENT, (void *)callback_ptr, user_data);
+               if (ret != BLUETOOTH_ERROR_NONE)
+                       goto fail;
                ret = _bt_register_event(BT_L2CAP_LE_SERVER_EVENT, (void *)callback_ptr, user_data);
                if (ret != BLUETOOTH_ERROR_NONE)
                        goto fail;
index 5cd2886..b8fd704 100644 (file)
@@ -3234,6 +3234,35 @@ void __bt_rfcomm_server_event_filter(GDBusConnection *connection,
        }
 }
 
+void __bt_l2cap_le_client_event_filter(GDBusConnection *connection,
+                                               const gchar *sender_name,
+                                               const gchar *object_path,
+                                               const gchar *interface_name,
+                                               const gchar *signal_name,
+                                               GVariant *parameters,
+                                               gpointer user_data)
+{
+       bt_event_info_t *event_info;
+       event_info = (bt_event_info_t *)user_data;
+
+       BT_DBG("+");
+       ret_if(event_info == NULL);
+
+       if (strcasecmp(object_path, BT_L2CAP_LE_CLIENT_PATH) != 0)
+               return;
+       if (strcasecmp(interface_name, BT_EVENT_SERVICE) != 0)
+               return;
+
+       ret_if(signal_name == NULL);
+
+       /* At present, there is no signal from bt-service to filter out here. */
+       BT_INFO("Unknow signal name %s", signal_name);
+
+       BT_DBG("-");
+       return;
+
+}
+
 void __bt_l2cap_le_server_event_filter(GDBusConnection *connection,
                                                 const gchar *sender_name,
                                                 const gchar *object_path,
@@ -4588,6 +4617,10 @@ int _bt_register_event(int event_type, void *event_cb, void *user_data)
                event_func = __bt_mesh_event_filter;
                path = BT_MESH_PATH;
                break;
+       case BT_L2CAP_LE_CLIENT_EVENT:
+               event_func = __bt_l2cap_le_client_event_filter;
+               path = BT_L2CAP_LE_CLIENT_PATH;
+               break;
        case BT_L2CAP_LE_SERVER_EVENT:
                event_func = __bt_l2cap_le_server_event_filter;
                path = BT_L2CAP_LE_SERVER_PATH;
index 90880bc..189f8ec 100644 (file)
@@ -136,7 +136,7 @@ static void __bt_l2cap_le_reply_pending_request(int result,
 }
 
 static void __bt_l2cap_le_socket_conn_cb(int result, int sock_fd,
-                                       char *uuid, char *address, int psm)
+                                       char *address, char *uuid, int psm)
 {
        bluetooth_l2cap_le_connection_t conn_info;