LE CoC: Fix socket events not coming in client role 05/299405/1
authorAyush Garg <ayush.garg@samsung.com>
Wed, 16 Mar 2022 07:25:18 +0000 (12:55 +0530)
committerAnuj Jain <anuj01.jain@samsung.com>
Wed, 27 Sep 2023 09:07:40 +0000 (14:37 +0530)
This patch will add the support for registering
L2CAP LE socket client events.

To avoid build conflict please merge this patch after merging bluez
patch: (Change-Id: I7f4f6ba5fe49b6d3fa05bfbc3a1b2bfdd269c6bb)

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

index 8160198a78c967de4710a211b00e8649a8bd9827..a778c0d4c3802bd14476365f2b0eefb0fa349965 100644 (file)
@@ -2578,6 +2578,9 @@ BT_EXPORT_API int bluetooth_register_callback(bluetooth_cb_func_ptr callback_ptr
                if (ret != BLUETOOTH_ERROR_NONE)
                        goto fail;
                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);
index d8d161bdc1920c2d6f9ef3c0fe4a2db60ec1d07e..7209c3324377d8133beafe71f2b0a99bcd52a37b 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,
@@ -4586,6 +4615,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 90880bc13fd167a3340b1cef39640d10c229a4d5..189f8ecc2f7cf53ca48141297a3792d84d4a7389 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;