Checkpoint EEPROM, firmware analysis and instrument protocol updates

This commit is contained in:
2026-10-08 21:51:44 +03:00
parent b0c0c05cfa
commit fe9b5a246e
24 changed files with 848 additions and 62 deletions

View File

@@ -3,11 +3,17 @@ import os
import unittest
os.environ.setdefault("QT_QPA_PLATFORM", "offscreen")
from PySide6.QtWidgets import QApplication
from PySide6.QtTest import QTest
from PySide6.QtCore import QEventLoop, QTimer
from pysetterminal.rawprotocol import RawProtocolWidget
from pysetterminal.serialbus import SerialBus, SerialTab
def process_events(milliseconds):
loop = QEventLoop()
QTimer.singleShot(milliseconds, loop.quit)
loop.exec()
class PendingProtocol:
def __init__(self):
self.requests = []
@@ -39,11 +45,11 @@ class MacroTests(unittest.TestCase):
def test_scheduled_execution_returns_and_can_be_cancelled(self):
self.tab.execute_macro_commands([self.command])
self.assertEqual(self.protocol.requests, [])
QTest.qWait(20)
process_events(20)
self.assertEqual(self.protocol.requests, [(0x200B, 0x35)])
self.assertTrue(self.tab.stop_macro_btn.isEnabled())
self.tab.stop_macro()
QTest.qWait(20)
process_events(20)
self.assertFalse(self.tab._macro_running)
self.assertTrue(self.tab.bus_read_btn.isEnabled())
self.assertEqual(len(self.protocol.requests), 1)
@@ -52,20 +58,20 @@ class MacroTests(unittest.TestCase):
self.tab.execute_macro_commands([self.command])
self.tab.stop_macro()
self.tab.execute_macro_commands([self.command])
QTest.qWait(20)
process_events(20)
self.assertEqual(len(self.protocol.requests), 1)
self.protocol.callback(False, "CRC error")
QTest.qWait(20)
process_events(20)
self.assertFalse(self.tab._macro_running)
self.assertEqual(len(self.protocol.requests), 1)
def test_completion_runs_next_step_and_updates_value(self):
self.tab.execute_macro_commands([self.command])
QTest.qWait(20)
process_events(20)
self.protocol.callback(True, {'raw': b"ack"})
QTest.qWait(20)
process_events(20)
self.assertEqual(self.protocol.requests[-1], (0x200F, None))
self.protocol.callback(True, {'value': 0x1234, 'raw_response': {'raw': b"reply"}})
QTest.qWait(20)
process_events(20)
self.assertFalse(self.tab._macro_running)
self.assertEqual(self.tab.bus_read_value_label.text(), "0x1234 (4660)")