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.MutableStateFlow
|
||||||
import kotlinx.coroutines.flow.StateFlow
|
import kotlinx.coroutines.flow.StateFlow
|
||||||
import kotlinx.coroutines.flow.asStateFlow
|
import kotlinx.coroutines.flow.asStateFlow
|
||||||
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.serialization.json.jsonObject
|
import kotlinx.serialization.json.jsonObject
|
||||||
import pw.binom.mercury.DiscoveredGlasses
|
import pw.binom.mercury.DiscoveredGlasses
|
||||||
@@ -54,6 +55,18 @@ object MercuryBridge {
|
|||||||
is RayNeoMercury.Event.Connected -> {
|
is RayNeoMercury.Event.Connected -> {
|
||||||
_state.value = _state.value.copy(connected = true)
|
_state.value = _state.value.copy(connected = true)
|
||||||
setStatus("подключено (BLE)")
|
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 -> {
|
is RayNeoMercury.Event.Disconnected -> {
|
||||||
_state.value = _state.value.copy(connected = false)
|
_state.value = _state.value.copy(connected = false)
|
||||||
|
|||||||
Reference in New Issue
Block a user