Description
Hey,
I'm using your lib in my desktop application and in the desktop application there is a field for flashing ECU. The flash process runs on a QThread and works fine when there is no frame in the bus. When I connect bus that contains more than one ECU, the CAN-TP layer miss messages. I can understand it from this message
Did not receive IsoTP frame from the Transport layer in time (timeout=12 sec)
2024-07-09 16:55:21 [ERROR] UdsClient: [TimeoutException] : Did not receive response in time. P2 timeout time has expired (timeout=12.000 sec)
Initially, I started to suspect the thread that was used for the flash update process. Then I created a simple script that sends single ECU Reset request within %80 bus load(250kbps). After that I realized that the response to this request was not captured by the isotp layer again. So I don't think that the cause of the problem is thread. I think there is a problem in the listener under high bus load.
I'm using these objects for creating connection and stack
self.bus = can.interface.Bus(bustype=self.comboBox.currentText(), channel=self.comboBox_2.currentText(),bitrate=int(bitt))
self.notifier = can.Notifier(self.bus, [can.Printer()])
self.tp_addr = isotp.Address(isotp.AddressingMode.Normal_29bits,txid=0x18DDE890,rxid=0x18DDF0E8) #18DD90E8
self.stack = isotp.NotifierBasedCanStack(bus=self.bus, notifier=self.notifier, address=self.tp_addr, params=isotp_params.isotp_params)
self.stack.set_sleep_timing(0,0)
self.conn = PythonIsoTpConnection(self.stack)
what do you think is causing this problem. Has anyone encountered this problem before at high bus load?