pamoja.lorawan.firmware

Firmware management, TS006-1.0.0, on port PORT.

What a device is running, what upgrade image it holds and whether that image can be installed, and the single reboot a device keeps, set either as a moment in time or as a countdown.

>>> from pamoja.lorawan import firmware, package_encode, package_parse
>>> manager = firmware.Firmware(2, 7)
>>> manager.set_image(firmware.ImageStatus.VALID, 3)
>>> asked = package_encode(firmware.PORT, "dev_upgrade_image_req")
>>> package_parse(firmware.PORT, True, manager.heard(asked)).next_version
3
 1"""Firmware management, TS006-1.0.0, on port :data:`PORT`.
 2
 3What a device is running, what upgrade image it holds and whether that image can be installed,
 4and the single reboot a device keeps, set either as a moment in time or as a countdown.
 5
 6>>> from pamoja.lorawan import firmware, package_encode, package_parse
 7>>> manager = firmware.Firmware(2, 7)
 8>>> manager.set_image(firmware.ImageStatus.VALID, 3)
 9>>> asked = package_encode(firmware.PORT, "dev_upgrade_image_req")
10>>> package_parse(firmware.PORT, True, manager.heard(asked)).next_version
113
12"""
13
14from __future__ import annotations
15
16import enum
17
18from pamoja._native import LORAWAN_FIRMWARE_PORT, LorawanFirmware
19
20__all__ = ["PORT", "Firmware", "ImageStatus"]
21
22#: The port this package is spoken on.
23PORT = LORAWAN_FIRMWARE_PORT
24
25#: The firmware management package running on a device.
26Firmware = LorawanFirmware
27
28
29class ImageStatus(str, enum.Enum):
30    """What a device makes of the firmware upgrade image it holds, table 10."""
31
32    #: It is holding none.
33    NONE = "none"
34    #: One is there, but it is corrupt or its signature does not verify.
35    CORRUPT = "corrupt"
36    #: One is there and authentic, but it is not for this hardware.
37    WRONG_HARDWARE = "wrong_hardware"
38    #: One is there, and it can be installed.
39    VALID = "valid"
PORT = 203
Firmware = <class 'builtins.LorawanFirmware'>
class ImageStatus(builtins.str, enum.Enum):
30class ImageStatus(str, enum.Enum):
31    """What a device makes of the firmware upgrade image it holds, table 10."""
32
33    #: It is holding none.
34    NONE = "none"
35    #: One is there, but it is corrupt or its signature does not verify.
36    CORRUPT = "corrupt"
37    #: One is there and authentic, but it is not for this hardware.
38    WRONG_HARDWARE = "wrong_hardware"
39    #: One is there, and it can be installed.
40    VALID = "valid"

What a device makes of the firmware upgrade image it holds, table 10.

NONE = <ImageStatus.NONE: 'none'>
CORRUPT = <ImageStatus.CORRUPT: 'corrupt'>
WRONG_HARDWARE = <ImageStatus.WRONG_HARDWARE: 'wrong_hardware'>
VALID = <ImageStatus.VALID: 'valid'>