feat(settings): Add firmware capability checks for settings (#4403)

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
This commit is contained in:
James Rich 2026-02-02 09:35:20 -06:00 committed by GitHub
parent fac72af9f4
commit 37b2efa176
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 76 additions and 60 deletions

View file

@ -56,6 +56,14 @@ data class Capabilities(val firmwareVersion: String?, internal val forceEnableAl
val supportsQrCodeSharing: Boolean
get() = isSupported("2.6.8")
/** Support for Status Message module. Supported since firmware v2.7.17. */
val supportsStatusMessage: Boolean
get() = isSupported("2.7.17")
/** Support for location sharing on secondary channels. Supported since firmware v2.6.10. */
val supportsSecondaryChannelLocation: Boolean
get() = isSupported("2.6.10")
/** Support for ESP32 Unified OTA. Supported since firmware v2.7.18. */
val supportsEsp32Ota: Boolean
get() = isSupported("2.7.18")

View file

@ -65,6 +65,18 @@ class CapabilitiesTest {
assertTrue(caps("2.6.8").supportsQrCodeSharing)
}
@Test
fun `supportsSecondaryChannelLocation requires v2 6 10`() {
assertFalse(caps("2.6.9").supportsSecondaryChannelLocation)
assertTrue(caps("2.6.10").supportsSecondaryChannelLocation)
}
@Test
fun `supportsStatusMessage requires v2 7 17`() {
assertFalse(caps("2.7.16").supportsStatusMessage)
assertTrue(caps("2.7.17").supportsStatusMessage)
}
@Test
fun `null firmware returns all false`() {
val c = caps(null)
@ -74,6 +86,8 @@ class CapabilitiesTest {
assertFalse(c.canToggleTelemetryEnabled)
assertFalse(c.canToggleUnmessageable)
assertFalse(c.supportsQrCodeSharing)
assertFalse(c.supportsSecondaryChannelLocation)
assertFalse(c.supportsStatusMessage)
}
@Test
@ -85,6 +99,8 @@ class CapabilitiesTest {
assertFalse(c.canToggleTelemetryEnabled)
assertFalse(c.canToggleUnmessageable)
assertFalse(c.supportsQrCodeSharing)
assertFalse(c.supportsSecondaryChannelLocation)
assertFalse(c.supportsStatusMessage)
}
@Test
@ -96,6 +112,8 @@ class CapabilitiesTest {
assertTrue(c.canToggleTelemetryEnabled)
assertTrue(c.canToggleUnmessageable)
assertTrue(c.supportsQrCodeSharing)
assertTrue(c.supportsSecondaryChannelLocation)
assertTrue(c.supportsStatusMessage)
}
@Test
@ -107,5 +125,7 @@ class CapabilitiesTest {
assertTrue(c.canToggleTelemetryEnabled)
assertTrue(c.canToggleUnmessageable)
assertTrue(c.supportsQrCodeSharing)
assertTrue(c.supportsSecondaryChannelLocation)
assertTrue(c.supportsStatusMessage)
}
}