Fix BullTron MOS refresh ordering
This commit is contained in:
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user