Fix issue of not reconnecting when disconnected due to timeout 40/305540/1
authorWootak Jung <wootak.jung@samsung.com>
Tue, 16 Jan 2024 03:53:35 +0000 (12:53 +0900)
committerWootak Jung <wootak.jung@samsung.com>
Mon, 5 Feb 2024 01:26:46 +0000 (10:26 +0900)
Change-Id: I0f263370df9c22d8fdc98ceb33bc1e364b828ba8
Signed-off-by: Wootak Jung <wootak.jung@samsung.com>
plugins/policy.c

index b75a0bac842598667a7aff4f17f828674e5f0b33..3539a25c0c048b025cc9fc1c925b5fe24d3d4316 100755 (executable)
@@ -802,8 +802,15 @@ static void disconnect_cb(struct btd_device *dev, uint8_t reason)
        DBG("reason %u", reason);
 
        /* Only attempt reconnect for the following reasons */
+#ifdef TIZEN_FEATURE_BLUEZ_MODIFY
+       /* In the timeout case, the error is converted to HCI_ERROR_CONNECTION_TIMEOUT(0x08)
+        * by mgmt_to_hci_reason(). But, in the suspend case, no conversion is performed */
+       if (reason != 0x08 &&
+           reason != MGMT_DEV_DISCONN_LOCAL_HOST_SUSPEND)
+#else
        if (reason != MGMT_DEV_DISCONN_TIMEOUT &&
            reason != MGMT_DEV_DISCONN_LOCAL_HOST_SUSPEND)
+#endif
                return;
 
        reconnect = reconnect_find(dev);
@@ -830,9 +837,15 @@ static void disconnect_cb(struct btd_device *dev, uint8_t reason)
                                reconnect_set_timer(reconnect, resume_delay);
                }
                break;
+#ifdef TIZEN_FEATURE_BLUEZ_MODIFY
+       case 0x08: /* HCI_ERROR_CONNECTION_TIMEOUT */
+               reconnect_set_timer(reconnect, -1);
+               break;
+#else
        case MGMT_DEV_DISCONN_TIMEOUT:
                reconnect_set_timer(reconnect, -1);
                break;
+#endif
        default:
                DBG("Developer error. Reason = %d", reason);
                break;