Skip to content

Commit

Permalink
tools: firmware_version_decoder.py: fix detectio for BETA+n firmware
Browse files Browse the repository at this point in the history
  • Loading branch information
Williangalvani committed Jul 20, 2024
1 parent 9c1fe4e commit 19aed9c
Showing 1 changed file with 13 additions and 1 deletion.
14 changes: 13 additions & 1 deletion Tools/scripts/firmware_version_decoder.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,18 @@ class FirmwareVersionType(enum.Enum):
Official = 255
EnumEnd = 256

@staticmethod
def get_release(version: int) -> str:
"""
Return the closest release type for a given version type, going down.
This is required because it is common in ardupilot to increase the version type
for successive betas, such as here:
https://github.com/ArduPilot/ardupilot/blame/8890c44370a7cf27d5efc872ef6da288ae3bc41f/ArduCopter/version.h#L12
"""
for release in reversed(FirmwareVersionType):
if version >= release.value:
return release
return "Unknown"

class VehicleType(enum.Enum):
Rover = 1
Expand Down Expand Up @@ -193,7 +205,7 @@ def unpack_fwversion(self) -> None:
self.fwversion.major = self.unpack("B")
self.fwversion.minor = self.unpack("B")
self.fwversion.patch = self.unpack("B")
self.fwversion.firmware_type = FirmwareVersionType(self.unpack("B"))
self.fwversion.firmware_type = FirmwareVersionType.get_release(self.unpack("B"))
self.fwversion.os_software_version = self.unpack("I")

self.fwversion.firmware_string = self.unpack_string_from_pointer()
Expand Down

0 comments on commit 19aed9c

Please sign in to comment.