From 113ee0ee257731983b399748b4e551755decc88a Mon Sep 17 00:00:00 2001 From: jhchun Date: Tue, 14 Jul 2026 14:21:02 +0900 Subject: [PATCH] =?UTF-8?q?BLE=20=EC=97=B0=EA=B2=B0=20=ED=95=B4=EC=A0=9C?= =?UTF-8?q?=20=ED=9B=84=20=EC=9E=AC=EA=B4=91=EA=B3=A0=20=ED=83=80=EC=9E=84?= =?UTF-8?q?=EC=95=84=EC=9B=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 수동으로 연결을 해제한 경우 10분간 광고 후 연결되지 않는 경우 전원 OFF - 비정상 연결 해제 시(거리가 멀어져서 연결이 끊어진 경우 등) 무제한 광고하며 재연결 대기 --- src/ble/ble_service.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/ble/ble_service.c b/src/ble/ble_service.c index f74ec54..adb2e6d 100644 --- a/src/ble/ble_service.c +++ b/src/ble/ble_service.c @@ -385,18 +385,20 @@ static void adv_restart_handler(struct k_work *work) led_set_state(LED_STATE_ADVERTISING); } +/* + * 연결 해제 후 재광고 정책 + * - 앱이 연결을 정상 종료(0x13)한 경우만 10분 타임아웃 후 자동 전원 OFF + * - 그 외(거리 이탈, 링크 타임아웃, 폰 전원 OFF, 페어링/보안 실패 등)는 재연결 대기를 위해 무제한 광고 + */ static bool ble_disconnect_reason_uses_unlimited_adv(uint8_t reason) { switch (reason) { - case BT_HCI_ERR_CONN_TIMEOUT: - case BT_HCI_ERR_LL_RESP_TIMEOUT: - case BT_HCI_ERR_TERM_DUE_TO_MIC_FAIL: - case BT_HCI_ERR_CONN_FAIL_TO_ESTAB: - return true; + case BT_HCI_ERR_REMOTE_USER_TERM_CONN: // 0x13 앱이 연결을 정상 종료 + return false; // → 10분 타임아웃 후 전원 OFF default: - return false; + return true; // 그 외 전부 → 무제한 광고 } }