update firmware api with more endpoints and parse firmware image headers

This commit is contained in:
Laura Klünder 2023-11-17 18:56:47 +01:00
parent 2d97f9bb87
commit 14e39b2377
6 changed files with 209 additions and 43 deletions

View file

@ -14,8 +14,8 @@ from django.utils import timezone
from django.utils.text import slugify
from django.utils.translation import gettext_lazy as _
from c3nav.mesh.dataformats import BoardType
from c3nav.mesh.messages import ChipType, ConfigFirmwareMessage, ConfigHardwareMessage
from c3nav.mesh.dataformats import BoardType, ChipType, FirmwareImage
from c3nav.mesh.messages import ConfigFirmwareMessage, ConfigHardwareMessage
from c3nav.mesh.messages import MeshMessage as MeshMessage
from c3nav.mesh.messages import MeshMessageType
from c3nav.mesh.utils import UPLINK_TIMEOUT
@ -410,6 +410,11 @@ class FirmwareBuild(models.Model):
for board in self.boards
]
@cached_property
def firmware_image(self) -> FirmwareImage:
firmware_image, remaining = FirmwareImage.decode(self.binary.open('rb').read()[:FirmwareImage.get_min_size()])
return firmware_image
class FirmwareBuildBoard(models.Model):
BOARDS = [(boardtype.name, boardtype.pretty_name) for boardtype in BoardType]