|
77 | 77 | _PATTERN_GECKO_BOOTLOADER_COMPATIBILITY_FULL = \ |
78 | 78 | "^.*Gecko Bootloader.*\\(([0-9a-fA-F]{4})-([0-9a-fA-F]{2})(.*)\\).*$" |
79 | 79 | _PATTERN_GECKO_BOOTLOADER_VERSION = \ |
80 | | - "^.*Gecko Bootloader v([0-9a-fA-F]{1}\\.[0-9a-fA-F]{1}\\.[0-9a-fA-F]{1}).*$" |
| 80 | + "^.*Gecko Bootloader v([0-9a-fA-F]{1,}\\.[0-9a-fA-F]{1,}\\.[0-9a-fA-F]{1,}).*$" |
81 | 81 |
|
82 | | -_XBEE3_BOOTLOADER_FILE_PREFIX = "xb3-boot-rf_" |
| 82 | +_XBEE3_BL_DEF_PREFIX = "xb3-boot-rf_" |
| 83 | +_XBEE3_BOOTLOADER_FILE_PREFIX = { |
| 84 | + HardwareVersion.XBEE3.code: _XBEE3_BL_DEF_PREFIX, |
| 85 | + HardwareVersion.XBEE3_SMT.code: _XBEE3_BL_DEF_PREFIX, |
| 86 | + HardwareVersion.XBEE3_TH.code: _XBEE3_BL_DEF_PREFIX, |
| 87 | + HardwareVersion.XBEE3_RR.code: "xb3-boot-rr_" |
| 88 | +} |
83 | 89 |
|
84 | 90 | _GEN3_BOOTLOADER_ERROR_CHECKSUM = 0x12 |
85 | 91 | _GEN3_BOOTLOADER_ERROR_VERIFY = 0x13 |
|
280 | 286 | HardwareVersion.XB24C.code, |
281 | 287 | HardwareVersion.XBP24C_S2C_SMT.code, |
282 | 288 | HardwareVersion.XBP24C_TH_DIP.code, |
283 | | - HardwareVersion.XB24C_TH_DIP.code) |
| 289 | + HardwareVersion.XB24C_TH_DIP.code, |
| 290 | + HardwareVersion.S2C_P5.code) |
284 | 291 |
|
285 | 292 | SX_HW_VERSIONS = (HardwareVersion.SX.code, |
286 | 293 | HardwareVersion.SX_PRO.code, |
287 | 294 | HardwareVersion.XB8X.code) |
288 | 295 |
|
289 | 296 | XBEE3_HW_VERSIONS = (HardwareVersion.XBEE3.code, |
290 | 297 | HardwareVersion.XBEE3_SMT.code, |
291 | | - HardwareVersion.XBEE3_TH.code) |
| 298 | + HardwareVersion.XBEE3_TH.code, |
| 299 | + HardwareVersion.XBEE3_RR.code) |
292 | 300 |
|
293 | 301 | LOCAL_SUPPORTED_HW_VERSIONS = SX_HW_VERSIONS + XBEE3_HW_VERSIONS |
294 | 302 | REMOTE_SUPPORTED_HW_VERSIONS = SX_HW_VERSIONS + XBEE3_HW_VERSIONS + S2C_HW_VERSIONS |
@@ -521,7 +529,7 @@ def parse_file(self): |
521 | 529 | self._image_type = utils.bytes_to_int( |
522 | 530 | _reverse_bytearray(file.read(_BUFFER_SIZE_SHORT))) |
523 | 531 | _log.debug(" - Image type: %s (%d)", |
524 | | - "Firmware" if not self._image_type else "File system", self._image_type) |
| 532 | + "Firmware" if self._image_type in (0, 1) else "File system", self._image_type) |
525 | 533 | f_version = _reverse_bytearray(file.read(_BUFFER_SIZE_INT)) |
526 | 534 | self._file_version = utils.bytes_to_int(f_version) |
527 | 535 | _log.debug(" - File version: %s (%d)", |
@@ -652,8 +660,8 @@ def manufacturer_code(self): |
652 | 660 | @property |
653 | 661 | def image_type(self): |
654 | 662 | """ |
655 | | - Returns the OTA file image type: 0x0000 for firmware, |
656 | | - 0x0100 for file system. |
| 663 | + Returns the OTA file image type: 0x0000 for XBee 3 firmware, |
| 664 | + 0x0001 for XBee 3 RR firmware, 0x0100 for file system. |
657 | 665 |
|
658 | 666 | Returns: |
659 | 667 | Integer: OTA file image type. |
@@ -3720,7 +3728,8 @@ def _check_bootloader_binary_file(self): |
3720 | 3728 | if self._bootloader_fw_file is None: |
3721 | 3729 | path = Path(self._xml_fw_file) |
3722 | 3730 | self._bootloader_fw_file = str(Path(path.parent).joinpath( |
3723 | | - _XBEE3_BOOTLOADER_FILE_PREFIX + str(self._xml_bootloader_version[0]) |
| 3731 | + _XBEE3_BOOTLOADER_FILE_PREFIX[self._target_hw_version] |
| 3732 | + + str(self._xml_bootloader_version[0]) |
3724 | 3733 | + _BOOTLOADER_VERSION_SEPARATOR + str(self._xml_bootloader_version[1]) |
3725 | 3734 | + _BOOTLOADER_VERSION_SEPARATOR + str(self._xml_bootloader_version[2]) |
3726 | 3735 | + EXTENSION_GBL)) |
@@ -4932,8 +4941,9 @@ def _check_img_data(self, payload): |
4932 | 4941 | if man_code != self._ota_file.manufacturer_code: |
4933 | 4942 | server_status = _XBee3OTAStatus.NO_IMAGE_AVAILABLE |
4934 | 4943 | # Check image type: |
4935 | | - # 0x0000: firmware upgrade |
4936 | | - # 0x0100: file system upgrade |
| 4944 | + # 0x0000: XBee 3 firmware upgrade |
| 4945 | + # 0x0001: XBee 3 RR firmware upgrade |
| 4946 | + # 0x0100: XBee 3 file system upgrade |
4937 | 4947 | elif img_type != self._ota_file.image_type: |
4938 | 4948 | server_status = _XBee3OTAStatus.NO_IMAGE_AVAILABLE |
4939 | 4949 | # Check compatibility number |
|
0 commit comments