fhub: reject A2DP(sink)/AVRCP(controller) multi connection 00/281700/1
authorAyush Garg <ayush.garg@samsung.com>
Tue, 20 Sep 2022 06:46:28 +0000 (12:16 +0530)
committerAyush Garg <ayush.garg@samsung.com>
Wed, 21 Sep 2022 02:05:54 +0000 (07:35 +0530)
if there is connected A2DP source device,
reject incoming A2DP(local: sink, remote: source) connection.
if there is connected AVRCP target device,
reject incoming AVRCP(local: CT, remote: TG) connection.

Change-Id: Id455b77641977c921eec936aaa4aa98552619652
Signed-off-by: shss-choi <shss.choi@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
bt-service/services/audio/a2dp_src/bt-service-a2dp-src.c
bt-service/services/audio/bt-service-audio.c
bt-service/services/device/bt-service-core-device.c

index 4a99dc9..e122e6a 100644 (file)
@@ -357,7 +357,11 @@ void _bt_a2dp_src_handle_incoming_authorization(char *address, int service_id)
 
        switch (service_id) {
        case A2DP_SERVICE_ID:
-               connected = _bt_is_headset_type_connected(BT_AUDIO_A2DP, connected_address);
+               if (TIZEN_FEATURE_FHUB_REFERENCE)
+                       connected = _bt_is_headset_type_connected(BT_AUDIO_A2DP_SOURCE, connected_address);
+               else
+                       connected = _bt_is_headset_type_connected(BT_AUDIO_A2DP, connected_address);
+
                if (connected) {
                        BT_INFO("A2DP is already connected..check which device..");
                        if (g_strcmp0(connected_address, address) != 0) {
index d251f57..1e84b6d 100644 (file)
@@ -150,6 +150,8 @@ void _bt_add_headset_to_list(int type, int status, const char *address)
                        if (status == BT_STATE_CONNECTED)
                                device->type |= type;
                        device->device_state = status;
+                       BT_DBG("Updated device[%s] in connected list, device state [%d] Device Type [%d]",
+                               address, device->device_state, device->type);
                        return;
                }
                node = g_list_next(node);
@@ -1380,6 +1382,11 @@ void _bt_audio_handle_incoming_authorization(char *address, int service_id)
                connected = _bt_is_headset_type_connected(BT_AUDIO_AG, connected_address);
                BT_DBG("Connected [0x%x]", connected);
                break;
+       case AVRCP_SERVICE_ID:
+               if (TIZEN_FEATURE_FHUB_REFERENCE) {
+                       connected = _bt_is_headset_type_connected(BT_AVRCP, connected_address);
+                       break;
+               }
        default:
                BT_ERR("Invalid HFP device ID.. [%d]", service_id);
                return;
index 0280a10..a8d87c8 100644 (file)
@@ -611,18 +611,30 @@ static void __bt_device_authorization_request_callback(event_dev_authorize_req_t
                BT_DBG("Incoming HID Profile conn Req from device addr [%s]", address);
                break;
        case A2DP_SERVICE_ID:
-               BT_DBG("Incoming A2DP(Remote Sink) profile conn Req from device addr [%s]", address);
+               if (TIZEN_FEATURE_FHUB_REFERENCE)
+                       BT_DBG("Incoming A2DP(Remote: Source) profile conn Req from device addr [%s]", address);
+               else
+                       BT_DBG("Incoming A2DP(Remote Sink) profile conn Req from device addr [%s]", address);
                _bt_a2dp_src_handle_incoming_authorization(address, service_id);
                return;
        case A2DP_SRC_SERVICE_ID:
-               BT_DBG("Incoming A2DP(Remote Source) Profile conn Req from device addr [%s]", address);
+               if (TIZEN_FEATURE_FHUB_REFERENCE)
+                       BT_DBG("Incoming A2DP(Remote: Sink) profile conn Req from device addr [%s]", address);
+               else
+                       BT_DBG("Incoming A2DP(Remote Source) Profile conn Req from device addr [%s]", address);
                _bt_a2dp_sink_handle_incoming_authorization(address, service_id);
                break;
        case AVRCP_SERVICE_ID:
-               BT_DBG("Incoming AVRCP (Remote) Profile conn Req from device addr [%s]", address);
-               break;
+               if (TIZEN_FEATURE_FHUB_REFERENCE) {
+                       BT_DBG("Incoming AVRCP (Remote: Target) Profile conn Req from device addr [%s]", address);
+                       _bt_audio_handle_incoming_authorization(address, service_id);
+                       return;
+               } else {
+                       BT_DBG("Incoming AVRCP (Remote) Profile conn Req from device addr [%s]", address);
+                       break;
+               }
        case AVRCP_CT_SERVICE_ID:
-               BT_DBG("Incoming AVRCP (Controller) Profile conn Req from device addr [%s]", address);
+               BT_DBG("Incoming AVRCP (Remote: Controller) Profile conn Req from device addr [%s]", address);
                break;
 #ifdef TIZEN_FEATURE_BT_OBEX
        case OPP_SERVICE_ID: {