driver: Add fn to get the firmware rev

This commit is contained in:
linuswck 2025-01-22 13:03:57 +08:00
parent c2806aee27
commit 0e707e3d6b

View File

@ -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()