Mercury: enable heartbeat on connect (keeps link alive), autolock endpoint

This commit is contained in:
2026-08-25 01:15:00 +03:00
parent 4556d3b6e4
commit 032424f513
@@ -11,6 +11,7 @@ import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.serialization.json.jsonObject
import pw.binom.mercury.DiscoveredGlasses
@@ -54,6 +55,18 @@ object MercuryBridge {
is RayNeoMercury.Event.Connected -> {
_state.value = _state.value.copy(connected = true)
setStatus("подключено (BLE)")
// Включаем heartbeat очков (каждые 3с они пингуют нас) — иначе
// при гашении экрана очки рвут BLE-связь через ~3 секунды.
// Повторяем, пока очки не будут готовы (они переподключаются
// в первые секунды и первое сообщение могут потерять).
scope.launch {
for (i in 0 until 30) {
if (!_state.value.connected) break
val ok = mercury?.enableHeartbeat() ?: false
if (i % 3 == 0) log("hb", "enable_heartbeat #$i ok=$ok")
delay(3000)
}
}
}
is RayNeoMercury.Event.Disconnected -> {
_state.value = _state.value.copy(connected = false)