Fix BullTron MOS refresh ordering

This commit is contained in:
2026-07-11 15:47:10 +02:00
parent 9c3757f91d
commit 421cea6ea1
2 changed files with 66 additions and 19 deletions
+23
View File
@@ -121,6 +121,29 @@ class BullTronParserTest(unittest.TestCase):
self.assertTrue(state.control_charge_mos)
self.assertFalse(state.control_discharge_mos)
def test_direct_mos_control_read_uses_register_context(self):
state = DeviceState()
payload = b"\x00\x00\x00\x01"
body = bytes([0xD2, 0x03, len(payload)]) + payload
from bulltron_gui import crc16_modbus_swapped
frame = body + crc16_modbus_swapped(body).to_bytes(2, "big")
decode_response(frame, state, 0x00A5)
self.assertFalse(state.control_charge_mos)
self.assertTrue(state.control_discharge_mos)
def test_four_byte_non_mos_read_still_decodes_production_date(self):
state = DeviceState()
payload = b"\x19\x01\x01\x00"
body = bytes([0xD2, 0x03, len(payload)]) + payload
from bulltron_gui import crc16_modbus_swapped
frame = body + crc16_modbus_swapped(body).to_bytes(2, "big")
decode_response(frame, state, 0x00C9)
self.assertEqual(state.production_date, "2025-01-01")
def test_system_mos_write_registers(self):
self.assertEqual(write_single_frame(0x00A5, 1).hex().upper()[:8], "D20600A5")
self.assertEqual(write_single_frame(0x00A6, 0).hex().upper()[:8], "D20600A6")