kopia lustrzana https://github.com/meshtastic/Meshtastic-Android
fix crashlytics autoreport: if we lose comms while sending gps pos, mark
connection closedpull/8/head
rodzic
2f50728372
commit
f55f40d624
4
TODO.md
4
TODO.md
|
@ -14,7 +14,6 @@ MVP features required for first public alpha
|
||||||
* add screenshots and text to play store entry
|
* add screenshots and text to play store entry
|
||||||
|
|
||||||
# Medium priority
|
# Medium priority
|
||||||
|
|
||||||
Features for future builds
|
Features for future builds
|
||||||
|
|
||||||
* describe user experience: devices always point to each other and show distance, you can send texts between nodes
|
* describe user experience: devices always point to each other and show distance, you can send texts between nodes
|
||||||
|
@ -61,7 +60,8 @@ Do this "Signal app compatible" release relatively soon after the alpha release
|
||||||
Things for the betaish period.
|
Things for the betaish period.
|
||||||
|
|
||||||
* let users save old channels
|
* let users save old channels
|
||||||
* make sw update work while node is connected to mesh (at least shutdown the other bluetooth services)
|
* make sw update work while node is connected to mesh - the problem is there are _two_ instances of SafeBluetooth at that moment and therefore we violate undocumented android mutex
|
||||||
|
rules at the BluetoothDevice level. Either make SafeBluetooth lock at the device level or (not as good) make SafeBluetooth a singleton.
|
||||||
* Use LocationRequest.setSmallestDisplacement to save battery and decrease net activity
|
* Use LocationRequest.setSmallestDisplacement to save battery and decrease net activity
|
||||||
* MeshService.reinitFromRadio can take 300 ms, run it in a worker thread instead
|
* MeshService.reinitFromRadio can take 300 ms, run it in a worker thread instead
|
||||||
* show user icons in chat
|
* show user icons in chat
|
||||||
|
|
|
@ -109,35 +109,41 @@ class MeshService : Service(), Logging {
|
||||||
private var lastSendMsec = 0L
|
private var lastSendMsec = 0L
|
||||||
|
|
||||||
override fun onLocationResult(locationResult: LocationResult) {
|
override fun onLocationResult(locationResult: LocationResult) {
|
||||||
super.onLocationResult(locationResult)
|
exceptionReporter {
|
||||||
var l = locationResult.lastLocation
|
super.onLocationResult(locationResult)
|
||||||
|
var l = locationResult.lastLocation
|
||||||
|
|
||||||
// Docs say lastLocation should always be !null if there are any locations, but that's not the case
|
// Docs say lastLocation should always be !null if there are any locations, but that's not the case
|
||||||
if (l == null) {
|
if (l == null) {
|
||||||
// try to only look at the accurate locations
|
// try to only look at the accurate locations
|
||||||
val locs =
|
val locs =
|
||||||
locationResult.locations.filter { !it.hasAccuracy() || it.accuracy < 200 }
|
locationResult.locations.filter { !it.hasAccuracy() || it.accuracy < 200 }
|
||||||
l = locs.lastOrNull()
|
l = locs.lastOrNull()
|
||||||
}
|
}
|
||||||
if (l != null) {
|
if (l != null) {
|
||||||
info("got location $l")
|
info("got location $l")
|
||||||
if (l.hasAccuracy() && l.accuracy >= 200) // if more than 200 meters off we won't use it
|
if (l.hasAccuracy() && l.accuracy >= 200) // if more than 200 meters off we won't use it
|
||||||
warn("accuracy ${l.accuracy} is too poor to use")
|
warn("accuracy ${l.accuracy} is too poor to use")
|
||||||
else {
|
else {
|
||||||
val now = System.currentTimeMillis()
|
val now = System.currentTimeMillis()
|
||||||
|
|
||||||
// we limit our sends onto the lora net to a max one once every FIXME
|
// we limit our sends onto the lora net to a max one once every FIXME
|
||||||
val sendLora = (now - lastSendMsec >= 30 * 1000)
|
val sendLora = (now - lastSendMsec >= 30 * 1000)
|
||||||
if (sendLora)
|
if (sendLora)
|
||||||
lastSendMsec = now
|
lastSendMsec = now
|
||||||
sendPosition(
|
try {
|
||||||
l.latitude, l.longitude, l.altitude.toInt(),
|
sendPosition(
|
||||||
destNum = if (sendLora) NODENUM_BROADCAST else myNodeNum,
|
l.latitude, l.longitude, l.altitude.toInt(),
|
||||||
wantResponse = sendLora
|
destNum = if (sendLora) NODENUM_BROADCAST else myNodeNum,
|
||||||
)
|
wantResponse = sendLora
|
||||||
|
)
|
||||||
|
} catch (ex: RadioNotConnectedException) {
|
||||||
|
warn("Lost connection to radio, stopping location requests")
|
||||||
|
onConnectionChanged(false)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue