Mercury: enable heartbeat on connect (keeps link alive), autolock endpoint
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user