feat: firmware bootloader ota warnings (#3846)

This commit is contained in:
Mac DeCourcy 2025-11-28 20:17:40 -08:00 committed by GitHub
parent b18ad56113
commit d4a30c0b24
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 253 additions and 30 deletions

View file

@ -0,0 +1,36 @@
/*
* Copyright (c) 2025 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.meshtastic.core.model
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
data class BootloaderOtaQuirk(
/** Hardware model id, matches DeviceHardware.hwModel. */
@SerialName("hwModel") val hwModel: Int,
/** Optional slug for readability / tooling. */
@SerialName("hwModelSlug") val hwModelSlug: String? = null,
/**
* Indicates that devices usually ship with a bootloader that does not support OTA out of the box and require a
* one-time bootloader upgrade (typically via USB) before DFU updates from the app work.
*/
@SerialName("requiresBootloaderUpgradeForOta") val requiresBootloaderUpgradeForOta: Boolean = false,
/** Optional URL pointing to documentation on how to update the bootloader. */
@SerialName("infoUrl") val infoUrl: String? = null,
)

View file

@ -32,6 +32,13 @@ data class DeviceHardware(
val partitionScheme: String? = null,
val platformioTarget: String = "",
val requiresDfu: Boolean? = null,
/**
* Indicates that the device typically ships with a bootloader that does not support OTA DFU, and that a one-time
* bootloader upgrade (usually over USB) is recommended before attempting firmware updates from the app.
*/
val requiresBootloaderUpgradeForOta: Boolean? = null,
/** Optional URL pointing to documentation for upgrading the bootloader. */
val bootloaderInfoUrl: String? = null,
val supportLevel: Int? = null,
val tags: List<String>? = null,
)