diff --git a/app/src/main/java/com/medithings/vesiscan/ui/views/monitoring/PlacementGuideView.kt b/app/src/main/java/com/medithings/vesiscan/ui/views/monitoring/PlacementGuideView.kt index 9fac660..2923204 100644 --- a/app/src/main/java/com/medithings/vesiscan/ui/views/monitoring/PlacementGuideView.kt +++ b/app/src/main/java/com/medithings/vesiscan/ui/views/monitoring/PlacementGuideView.kt @@ -135,6 +135,9 @@ fun PlacementGuideView(appState: AppState) { if (isClinicalAlign) com.medithings.vesiscan.managers.AlignmentAlgo.V2 else com.medithings.vesiscan.managers.AlignmentAlgo.V1 v2Aligner.reset() + // 2026-08-11: 이전 view (PiezoMonitoring 등) 에서 남은 stale mtb timeout 카운터 초기화. + // 재진입 시 첫 mtb 가 정상 응답해도 이전 값 때문에 UI 가 "응답 지연" 로 시작하는 버그 방지. + bleManager.consecutiveMtbTimeouts.value = 0 // Clinical alignment session 진입 시 — 자동으로 scan 시작 (Step 0 baseline 캡쳐). // waitingForStart 는 true 유지 — 사용자는 여전히 Start 눌러 알고리즘 시작 결정. // baseline cycles 는 measurement.json 에 phase="STEP_0_BASELINE" 로 누적됨. @@ -177,14 +180,26 @@ fun PlacementGuideView(appState: AppState) { // BleManager.sendMtb 는 raa 응답 대기 3초 후 consecutiveMtbTimeouts 를 증가시킴. val mtbTimeoutCount by bleManager.consecutiveMtbTimeouts LaunchedEffect(mtbTimeoutCount) { - if (mtbTimeoutCount in 1..2) { - directionHint = context.getString(R.string.mtb_response_delayed) - directionIcon = "" - } else if (mtbTimeoutCount >= 3) { - directionHint = context.getString(R.string.mtb_response_reconnect) - directionIcon = "" - bleManager.debugLogger.warn("MTB_FORCE_RECONNECT after $mtbTimeoutCount consecutive timeouts") - bleManager.forceDisconnectAndReconnect() + val delayedMsg = context.getString(R.string.mtb_response_delayed) + val reconnectMsg = context.getString(R.string.mtb_response_reconnect) + when { + // 2026-08-11: 정상 복구 시 UI 문구 복원 (기존엔 브랜치 없어 "응답 지연" stuck). + mtbTimeoutCount == 0 -> { + if (directionHint == delayedMsg || directionHint == reconnectMsg) { + directionHint = "" + directionIcon = "" + } + } + mtbTimeoutCount in 1..2 -> { + directionHint = delayedMsg + directionIcon = "" + } + mtbTimeoutCount >= 3 -> { + directionHint = reconnectMsg + directionIcon = "" + bleManager.debugLogger.warn("MTB_FORCE_RECONNECT after $mtbTimeoutCount consecutive timeouts") + bleManager.forceDisconnectAndReconnect() + } } }