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; // 그 외 전부 → 무제한 광고 } }