make 1.2 firmware update work even for old 1.0 devices

1.2-legacy
Kevin Hester 2021-03-19 22:49:51 +08:00
rodzic bfdf4a661a
commit 54bf0e85c1
2 zmienionych plików z 11 dodań i 15 usunięć

Wyświetl plik

@ -668,8 +668,7 @@ class MainActivity : AppCompatActivity(), Logging,
else {
val curVer = DeviceVersion(info.firmwareVersion ?: "0.0.0")
val minVer = DeviceVersion("1.2.0")
if (curVer < minVer)
if (curVer < MeshService.minFirmwareVersion)
showAlert(R.string.firmware_too_old, R.string.firmware_old)
else {
// If our app is too old/new, we probably don't understand the new radioconfig messages, so we don't read them until here

Wyświetl plik

@ -94,6 +94,10 @@ class MeshService : Service(), Logging {
"com.geeksville.mesh",
"com.geeksville.mesh.service.MeshService"
)
/** The minimmum firmware version we know how to talk to. We'll still be able to talk to 1.0 firmwares but only well enough to ask them to firmware update
*/
val minFirmwareVersion = DeviceVersion("1.2.0")
}
enum class ConnectionState {
@ -1174,18 +1178,6 @@ class MeshService : Service(), Logging {
/// Used to make sure we never get foold by old BLE packets
private var configNonce = 1
private fun handleRadioConfig(radio: RadioConfigProtos.RadioConfig) {
val packetToSave = Packet(
UUID.randomUUID().toString(),
"RadioConfig",
System.currentTimeMillis(),
radio.toString()
)
insertPacket(packetToSave)
radioConfig = radio
}
/**
* Convert a protobuf NodeInfo into our model objects and update our node DB
*/
@ -1416,7 +1408,12 @@ class MeshService : Service(), Logging {
sendAnalytics()
requestRadioConfig()
if(deviceVersion < minFirmwareVersion) {
info("Device firmware is too old, faking config so firmware update can occur")
onHasSettings()
}
else
requestRadioConfig()
}
} else
warn("Ignoring stale config complete")