From 7125e79fb9c0394c45a73355430febf509e85a35 Mon Sep 17 00:00:00 2001 From: jjangddu Date: Mon, 27 Apr 2026 11:24:57 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20scan=5Fid=EB=A5=BC=20BLE=20=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=EC=97=90=EB=8F=84=20=EC=B6=94=EA=B0=80=20(CSV?= =?UTF-8?q?=EC=99=80=20=EB=8C=80=EC=A1=B0=20=EA=B0=80=EB=8A=A5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - MEASUREMENT scan=3 vol=305.2ml lr=1.20 valid=4/6 - BV_SKIP scan=4 center=2/4 total=2/6 - BV_FAIL scan=5 no valid channels AdcCsvLogger.lastScanId 공개 → BleDebugLogger에서 참조 Co-Authored-By: Claude Opus 4.6 (1M context) --- .../com/example/medilightv2android/services/AdcCsvLogger.kt | 3 +++ .../com/example/medilightv2android/services/BleDebugLogger.kt | 4 +++- .../ui/views/monitoring/PiezoMonitoringView.kt | 4 ++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/example/medilightv2android/services/AdcCsvLogger.kt b/app/src/main/java/com/example/medilightv2android/services/AdcCsvLogger.kt index 2ef931d..9a0d23e 100644 --- a/app/src/main/java/com/example/medilightv2android/services/AdcCsvLogger.kt +++ b/app/src/main/java/com/example/medilightv2android/services/AdcCsvLogger.kt @@ -16,6 +16,8 @@ object AdcCsvLogger { private val dayFmt = SimpleDateFormat("yyyy-MM-dd", Locale.US) private val timeFmt = SimpleDateFormat("HH:mm:ss.SSS", Locale.US) + var lastScanId: Int = 0 + private set private var scanCounter = 0 private fun getDir(): File { @@ -47,6 +49,7 @@ object AdcCsvLogger { val file = getTodayFile() val isNew = !file.exists() || file.length() == 0L scanCounter++ + lastScanId = scanCounter val timestamp = timeFmt.format(Date()) val volStr = volumeMl?.let { "%.1f".format(it) } ?: "" diff --git a/app/src/main/java/com/example/medilightv2android/services/BleDebugLogger.kt b/app/src/main/java/com/example/medilightv2android/services/BleDebugLogger.kt index 0942beb..2c1267b 100644 --- a/app/src/main/java/com/example/medilightv2android/services/BleDebugLogger.kt +++ b/app/src/main/java/com/example/medilightv2android/services/BleDebugLogger.kt @@ -156,8 +156,10 @@ class BleDebugLogger private constructor(private val context: Context) { } fun measurementResult(volumeMl: Double?, lrRatio: Double, validChannels: Int, urineLines: List) { + val scanId = AdcCsvLogger.lastScanId val msg = buildString { - append("MEASUREMENT vol=${volumeMl?.let { "%.1f".format(it) } ?: "null"}ml") + append("MEASUREMENT scan=$scanId") + append(" vol=${volumeMl?.let { "%.1f".format(it) } ?: "null"}ml") append(" lr=${"%.2f".format(lrRatio)}") append(" valid=$validChannels/6") append(" urine=[${urineLines.joinToString(",")}]") diff --git a/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PiezoMonitoringView.kt b/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PiezoMonitoringView.kt index cae2124..add6922 100644 --- a/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PiezoMonitoringView.kt +++ b/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PiezoMonitoringView.kt @@ -158,7 +158,7 @@ fun PiezoMonitoringView(appState: AppState) { } } else if (centerWallCount > 0) { Log.w("PiezoMonitor", "Insufficient center channels: $centerWallCount/4 (need 3+)") - bleManager.debugLogger.warn("BV_SKIP center=$centerWallCount/4 total=$totalWallCount/6") + bleManager.debugLogger.warn("BV_SKIP scan=${com.example.medilightv2android.services.AdcCsvLogger.lastScanId} center=$centerWallCount/4 total=$totalWallCount/6") com.example.medilightv2android.services.AdcCsvLogger.log(rawADC, null) android.widget.Toast.makeText(context, "측정 부족 (${centerWallCount}/4채널) — 센서 위치를 조절해주세요", @@ -166,7 +166,7 @@ fun PiezoMonitoringView(appState: AppState) { } } else { Log.d("PiezoMonitor", "No valid channels — volume unchanged") - bleManager.debugLogger.warn("BV_FAIL no valid channels") + bleManager.debugLogger.warn("BV_FAIL scan=${com.example.medilightv2android.services.AdcCsvLogger.lastScanId} no valid channels") val failADC = channels.sortedBy { it.channel }.map { it.buffer } com.example.medilightv2android.services.AdcCsvLogger.log(failADC, null) android.widget.Toast.makeText(context,