From 43fe8db5ebdae6b7f12dd481e887cb17fbf5cb79 Mon Sep 17 00:00:00 2001 From: Alexander Bessman Date: Mon, 19 Aug 2024 08:06:20 +0200 Subject: [PATCH] Add get_firmware_version --- pslab/protocol.py | 1 + pslab/serial_handler.py | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/pslab/protocol.py b/pslab/protocol.py index 133f3f4..db1a634 100644 --- a/pslab/protocol.py +++ b/pslab/protocol.py @@ -152,6 +152,7 @@ GET_INDUCTANCE = Byte.pack(4) GET_VERSION = Byte.pack(5) +GET_FW_VERSION = Byte.pack(6) RETRIEVE_BUFFER = Byte.pack(8) GET_HIGH_FREQUENCY = Byte.pack(9) diff --git a/pslab/serial_handler.py b/pslab/serial_handler.py index 0a98cb8..8ba67f7 100755 --- a/pslab/serial_handler.py +++ b/pslab/serial_handler.py @@ -8,6 +8,8 @@ >>> device.disconnect() """ +from __future__ import annotations + try: import grp except ImportError: @@ -105,6 +107,7 @@ def __init__( self.check_serial_access_permission() self.connect(port=port, baudrate=baudrate, timeout=timeout) self.connected = self.interface.is_open + self.firmware = self.get_firmware_version() @staticmethod def check_serial_access_permission(): @@ -264,6 +267,30 @@ def get_version(self) -> str: version = self.interface.readline() return version.decode("utf-8") + def get_firmware_version(self) -> tuple[int, int, int]: + """Get firmware version. + + Returns + ------- + tuple[int, int, int] + major, minor, patch. + + """ + self.send_byte(CP.COMMON) + self.send_byte(CP.GET_FW_VERSION) + + try: + # Firmware version query was added in firmware version 3.0.0. + major = self.get_byte() + minor = self.get_byte() + patch = self.get_byte() + except serial.SerialException: + major = 2 + minor = 0 + patch = 0 + + return major, minor, patch + def get_ack(self) -> int: """Get response code from PSLab.