fix: Endian 감지 간헐적 실패 수정 (19회 중 5회 ADC 값 폭발)
근본 원인: CH0 첫 샘플이 LE/BE 둘 다 4095 이하일 때 감지 불가 → LE로 잘못 판정 → 전체 채널 값 폭발 (30000~65000) 수정: - 확실한 경우: 기존 로직 유지 (LE>4095→BE, BE>4095→LE) - 애매한 경우: forceBigEndian 기본값 사용 - VBT* 기기: forceBigEndian=true (기기 연결 시 자동 설정) - 2025MEDIP: forceBigEndian=false - Endian 결정 로그 추가 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -613,9 +613,10 @@ class BleManager private constructor(private val context: Context) {
|
||||
if (idx >= 0) discoveredDevices[idx] = discoveredDevices[idx].copy(isConnected = true, isConnecting = false)
|
||||
isConnected.value = true
|
||||
connectedDeviceName.value = try { gatt.device.name ?: "Unknown" } catch (_: Exception) { "Unknown" }
|
||||
// Auto-detect device preset from name
|
||||
// Auto-detect device preset + endian from name
|
||||
com.example.medilightv2android.managers.PiezoHW.autoDetectPreset(connectedDeviceName.value)
|
||||
logd { "Device preset: ${com.example.medilightv2android.managers.PiezoHW.presetName} (from '${connectedDeviceName.value}')" }
|
||||
piezoCollector.forceBigEndian = connectedDeviceName.value.startsWith("VBT")
|
||||
logd { "Device preset: ${com.example.medilightv2android.managers.PiezoHW.presetName}, endian: ${if (piezoCollector.forceBigEndian) "BE" else "LE"} (from '${connectedDeviceName.value}')" }
|
||||
|
||||
lastConnectedAddress = gatt.device.address
|
||||
reconnectAttempt = 0
|
||||
|
||||
Reference in New Issue
Block a user