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

index 46bbb85f1a3c7905829dd18a1f443d5e5ee7d2b9..065ce4f28fb27367532163f69ae6b980d6932c36 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;