From b822b49fc63549a7339ec65368d7d38eefc7c165 Mon Sep 17 00:00:00 2001 From: jjangddu Date: Fri, 10 Jul 2026 11:03:14 +0900 Subject: [PATCH] =?UTF-8?q?feat(scan):=20=EA=B8=B0=EA=B8=B0=20=EC=A0=80?= =?UTF-8?q?=EC=9E=A5/=ED=91=9C=EC=8B=9C=20clinical=20flow=20=EC=A1=B0?= =?UTF-8?q?=EA=B1=B4=20=EC=A0=9C=EA=B1=B0=20=E2=80=94=20=EC=9D=BC=EB=B0=98?= =?UTF-8?q?=20=EB=AA=A8=EB=93=9C=EC=97=90=EC=84=9C=EB=8F=84=20=ED=99=9C?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 증상: Clinical mode 로 진입해서 pair 한 기기만 KnownDeviceStore 에 저장되고 DeviceScan 화면 상단의 '저장된 기기' 목록에 표시됨. 일반 모드로 앱을 쓸 때는 매번 fresh scan → 이름 확인 → 연결 반복해야 함. 수정: - BleManager onConnectionStateChange (STATE_CONNECTED) 안 KnownDeviceStore .add() 를 감싸던 `if (inClinicalFlow)` 조건 제거. 연결 성공한 모든 기기를 영속화. - DeviceScanView 의 초기 knownDevices 로드도 clinical 조건 제거. 저장된 기기가 있으면 진입 경로 무관하게 상단에 표시. 효과: - 일반 사용자도 한 번 연결한 기기를 다음 세션에 목록에서 바로 선택. - 재연결 대상 자동 감지 (lastConnectedAddress 흐름) 도 clinical 밖에서 정상 동작. Co-Authored-By: Claude Opus 4.7 --- .../com/medithings/vesiscan/ble/BleManager.kt | 16 +++++++--------- .../ui/views/connection/DeviceScanView.kt | 7 ++----- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/medithings/vesiscan/ble/BleManager.kt b/app/src/main/java/com/medithings/vesiscan/ble/BleManager.kt index 8ece26a..c3e88ee 100644 --- a/app/src/main/java/com/medithings/vesiscan/ble/BleManager.kt +++ b/app/src/main/java/com/medithings/vesiscan/ble/BleManager.kt @@ -980,15 +980,13 @@ class BleManager private constructor(private val context: Context) { cancelReconnectTimer() debugLogger.connected(connectedDeviceName.value, gatt.device.address) - // Clinical 흐름에서만 KnownDeviceStore 영속화. 일반 사용자는 - // 매 세션 fresh scan + pair — 저장 0개. - if (com.medithings.vesiscan.services.ClinicalSessionStore.inClinicalFlow) { - try { - com.medithings.vesiscan.services.KnownDeviceStore.add( - context, gatt.device.address, connectedDeviceName.value - ) - } catch (_: Exception) {} - } + // 2026-07-10: clinical 흐름 조건 제거 — 어떤 진입 경로든 연결 성공 시 + // KnownDeviceStore 에 영속화. 재사용 편의 (재연결 대상 자동 감지 등). + try { + com.medithings.vesiscan.services.KnownDeviceStore.add( + context, gatt.device.address, connectedDeviceName.value + ) + } catch (_: Exception) {} // MTU 247 요청 (reb: 208B 패킷 드롭 방지) // onMtuChanged 콜백에서 discoverServices 호출 diff --git a/app/src/main/java/com/medithings/vesiscan/ui/views/connection/DeviceScanView.kt b/app/src/main/java/com/medithings/vesiscan/ui/views/connection/DeviceScanView.kt index 1104dee..2193dfe 100644 --- a/app/src/main/java/com/medithings/vesiscan/ui/views/connection/DeviceScanView.kt +++ b/app/src/main/java/com/medithings/vesiscan/ui/views/connection/DeviceScanView.kt @@ -54,11 +54,8 @@ fun DeviceScanView(appState: AppState) { var connectingDeviceAddress by remember { mutableStateOf(null) } var permissionsGranted by remember { mutableStateOf(false) } - // Clinical 흐름에서만 다중 기기 저장/표시 — 일반 사용자는 fresh scan & pair. - val isClinicalFlow = com.medithings.vesiscan.services.ClinicalSessionStore.inClinicalFlow - var knownDevices by remember { - mutableStateOf(if (isClinicalFlow) KnownDeviceStore.getAll(context) else emptyList()) - } + // 2026-07-10: clinical 흐름 조건 제거 — 일반 사용자도 저장된 기기 목록 표시. + var knownDevices by remember { mutableStateOf(KnownDeviceStore.getAll(context)) } var pendingDelete by remember { mutableStateOf(null) } val knownAddresses = knownDevices.map { it.address }.toSet() val newDevices = bleManager.discoveredDevices