# tool/core/cmd/fw_status.py import struct from core.utils import console, console_err from core.protocol import COMMANDS, ERRORS class fw_status: def __init__(self, bus): self.bus = bus def get(self): import struct self.bus.send_request(COMMANDS['get_firmware_status']) data = self.bus.receive_response(length=10) if not data or data.get('type') == 'error': return None header = data['data'] status = header[0] app_version_raw = struct.unpack('> 24) & 0xFF, 'fw_minor': (app_version_raw >> 16) & 0xFF, 'fw_patch': (app_version_raw >> 8)& 0xFF, 'kernel_major': (ker_version_raw >> 16) & 0xFF, 'kernel_minor': (ker_version_raw >> 8) & 0xFF, 'kernel_patch': ker_version_raw & 0xFF, 'fw_string': fw_string, 'kernel_string': f"{(ker_version_raw >> 16) & 0xFF}.{(ker_version_raw >> 8) & 0xFF}.{ker_version_raw & 0xFF}" } return result def print(self, result): if not result: return status = "UNKNOWN" if result['status'] == 0x00: status = "CONFIRMED" elif result['status'] == 0x01: status = "PENDING" elif result['status'] == 0x02: status = "TESTING" console.print(f"[info]Firmware Status[/info] des Controllers ist [info]{status}[/info]:") console.print(f" • Firmware: [info]{result['fw_string']}[/info] ({result['fw_major']}.{result['fw_minor']}.{result['fw_patch']})") console.print(f" • Kernel: [info]{result['kernel_string']}[/info] ({result['kernel_major']}.{result['kernel_minor']}.{result['kernel_patch']})")