From 414ce940a2388e9ff12c04a345bb7b49132b58ff Mon Sep 17 00:00:00 2001 From: jjangddu Date: Fri, 8 May 2026 12:27:58 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20maa=201=EC=B4=88=20throttle=20=E2=80=94?= =?UTF-8?q?=20BLE=20=EA=B3=84=EC=B8=B5=EC=97=90=EC=84=9C=20=EC=9D=B4?= =?UTF-8?q?=EC=A4=91=20=EC=A0=84=EC=86=A1=20=EB=AC=BC=EB=A6=AC=20=EC=B0=A8?= =?UTF-8?q?=EB=8B=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit handler.post로 isMeasuring 갱신해도 Compose state 레이스 해결 안 됨. BleManager에서 lastMaaSentMs 타임스탬프로 1초 이내 재전송 무조건 차단. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../medilightv2android/ble/BleManager.kt | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/example/medilightv2android/ble/BleManager.kt b/app/src/main/java/com/example/medilightv2android/ble/BleManager.kt index c83267e..23ba6c1 100644 --- a/app/src/main/java/com/example/medilightv2android/ble/BleManager.kt +++ b/app/src/main/java/com/example/medilightv2android/ble/BleManager.kt @@ -396,6 +396,13 @@ class BleManager private constructor(private val context: Context) { } fun sendAllChannels(mode: Int = 0) { + val now = System.currentTimeMillis() + if (now - lastMaaSentMs < 1000) { + android.util.Log.w("BleManager", "maa THROTTLED — ${now - lastMaaSentMs}ms since last") + debugLogger.warn("maa THROTTLED ${now - lastMaaSentMs}ms") + return + } + lastMaaSentMs = now piezoCollector.startMultiChannel(6) sendRaw(CRC16.buildCommandASCII("maa", " ")) } @@ -446,8 +453,16 @@ class BleManager private constructor(private val context: Context) { sendRaw(CRC16.buildCommandASCII("mbb", " ")) } - /** 6채널 측정만 (maa) */ + /** 6채널 측정만 (maa) — 최소 1초 간격 throttle */ + private var lastMaaSentMs = 0L fun sendChannelsOnly() { + val now = System.currentTimeMillis() + if (now - lastMaaSentMs < 1000) { + android.util.Log.w("BleManager", "maa THROTTLED — ${now - lastMaaSentMs}ms since last") + debugLogger.warn("maa THROTTLED ${now - lastMaaSentMs}ms") + return + } + lastMaaSentMs = now piezoCollector.startMultiChannel(6) sendRaw(CRC16.buildCommandASCII("maa", " ")) }