ble: 펌웨어 구버전 경고 배너 (< VBTFW0118)
새 펌웨어(VBTFW0118+) 와 코드의 BLE throttle/MTU 가정이 맞도록
정렬됨. 더 옛 펌웨어가 연결된 경우 측정이 안 됨에도 사용자
입장에선 원인을 알 수 없어 endless loading 으로 보임 — 그
혼동을 막기 위한 명시적 경고.
- BleManager.MIN_FIRMWARE_BUILD = 118 상수
- BleManager.parseFirmwareBuild("VBTFW0116") → 116
- BleManager.isFirmwareOutdated: 파싱한 빌드 < 118 일 때 true
- 신규 FirmwareWarningBanner 컴포저블 (주황 경고색)
- PlacementGuide / PiezoMonitoring 상단에 노출
펌웨어 미수신 상태(아직 mid? 응답 전)는 false 로 취급 — false
positive 방지.
This commit is contained in:
@@ -28,6 +28,8 @@ class BleManager private constructor(private val context: Context) {
|
||||
|
||||
companion object {
|
||||
private const val TAG = "BleManager"
|
||||
/** 정상 측정에 필요한 최소 펌웨어 빌드 번호 (mtb? throttle/MTU 가정과 일치). */
|
||||
const val MIN_FIRMWARE_BUILD = 118
|
||||
private inline fun logd(msg: () -> String) { if (BuildConfig.DEBUG) Log.d(TAG, msg()) }
|
||||
private inline fun logw(msg: () -> String) { if (BuildConfig.DEBUG) Log.w(TAG, msg()) }
|
||||
private inline fun loge(msg: () -> String) { if (BuildConfig.DEBUG) Log.e(TAG, msg()) }
|
||||
@@ -81,6 +83,20 @@ class BleManager private constructor(private val context: Context) {
|
||||
val firmwareVersion = mutableStateOf("") // "VBTFW0116"
|
||||
val hardwareVersion = mutableStateOf("") // "VBTHW0100"
|
||||
val serialNumber = mutableStateOf("") // "VBT26040001"
|
||||
|
||||
/** "VBTFW0116" → 116, 형식 안 맞으면 null. */
|
||||
fun parseFirmwareBuild(raw: String): Int? {
|
||||
val m = Regex("(\\d+)$").find(raw) ?: return null
|
||||
return m.groupValues[1].toIntOrNull()
|
||||
}
|
||||
|
||||
/** 펌웨어 버전이 MIN_FIRMWARE_BUILD 미만이면 true. 모르거나(아직 미수신) 형식 안 맞으면 false. */
|
||||
val isFirmwareOutdated: Boolean
|
||||
get() {
|
||||
val n = parseFirmwareBuild(firmwareVersion.value) ?: return false
|
||||
return n < MIN_FIRMWARE_BUILD
|
||||
}
|
||||
|
||||
val batteryLevel = mutableStateOf(0)
|
||||
val bluetoothEnabled = mutableStateOf(bluetoothAdapter?.isEnabled == true)
|
||||
val isServiceReady = mutableStateOf(false)
|
||||
|
||||
Reference in New Issue
Block a user