diff --git a/pykirdy/driver/kirdy.py b/pykirdy/driver/kirdy.py index 1feaee0..5f615d7 100644 --- a/pykirdy/driver/kirdy.py +++ b/pykirdy/driver/kirdy.py @@ -29,6 +29,7 @@ class CmdList: SetPdFinGain = _dt.f32 SetPdTransconductance = _dt.f32 GetHwRev = _dt.none + GetFirmwareRev = _dt.none GetStatusReport = _dt.none GetSettingsSummary = _dt.none Dfu = _dt.none @@ -234,6 +235,24 @@ class Device: """ return await self._send_cmd(self._cmd._target, self._cmd.GetHwRev, msg_type="HwRev") + async def get_firmware_rev(self): + """ + Get firmware revision of the connected Kirdy. + + If the firmware was built from a dirty repo: + { + 'msg_type': 'FirmwareRev', + 'firmware_rev': "c8e9826-dirty" + } + + If the firmware was built from a clean repo: + { + 'msg_type': 'FirmwareRev', + 'firmware_rev': "c8e9826" + } + """ + return await self._send_cmd(self._cmd._target, self._cmd.GetFirmwareRev, msg_type="FirmwareRev") + async def get_status_report(self, sig=None): """ Get status of all peripherals in a json object. @@ -639,6 +658,7 @@ class Kirdy: self.laser = Laser(self._send_cmd) self.thermostat = Thermostat(self._send_cmd) self.hw_rev = None + self.firmware_rev = None self._task_queue, self._int_msg_queue, self._report_queue = None, None, None self._timeout = 5.0 @@ -661,6 +681,9 @@ class Kirdy: def get_hw_rev(self): return self.hw_rev + def get_firmware_rev(self): + return self.firmware_rev + def set_report_sig(self, sig): """ Connect a PyQt Signal to the status report output(dict). This should be configured before the session is started. @@ -788,6 +811,12 @@ class Kirdy: hw_rev = await self.device.get_hw_rev() self.hw_rev = hw_rev["hw_rev"] + try: + firmware_rev = await self.device.get_firmware_rev() + self.firmware_rev = firmware_rev["firmware_rev"] + except: + self.firmware_rev = "Unknown" + if self._connected_sig is not None: self._connected_sig.emit(True) self.connected_event.set()