From 483725d77323f87f049cf675deb39f1d2f1bd720 Mon Sep 17 00:00:00 2001 From: Ayush Garg Date: Wed, 16 Mar 2022 12:55:18 +0530 Subject: [PATCH] LE CoC: Fix socket events not coming in client role This patch will add the support for registering L2CAP LE socket client events. Change-Id: If991e7f5ed3cb2b79070fbc6daceff47482b70fe Signed-off-by: Ayush Garg --- bt-api/bt-common.c | 3 ++ bt-api/bt-event-handler.c | 33 ++++++++++++++++++++++ bt-service/services/l2cap_le/bt-service-l2cap-le.c | 2 +- 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/bt-api/bt-common.c b/bt-api/bt-common.c index d50cb00..5132176 100644 --- a/bt-api/bt-common.c +++ b/bt-api/bt-common.c @@ -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; diff --git a/bt-api/bt-event-handler.c b/bt-api/bt-event-handler.c index 5cd2886..b8fd704 100644 --- a/bt-api/bt-event-handler.c +++ b/bt-api/bt-event-handler.c @@ -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; diff --git a/bt-service/services/l2cap_le/bt-service-l2cap-le.c b/bt-service/services/l2cap_le/bt-service-l2cap-le.c index 90880bc..189f8ec 100644 --- a/bt-service/services/l2cap_le/bt-service-l2cap-le.c +++ b/bt-service/services/l2cap_le/bt-service-l2cap-le.c @@ -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; -- 2.7.4