I am trying out the example class FirmwareLoader for handling background SW loading process.
During my SW update process, i.e. file.Read is fetching file from service every 50ms, I notice sometimes that status_ = ErrorTimeout in service response callback, even though all frames was actually sent on the bus (confirmed sniffing with GUI tool and separate CAN dongle) nehce completing both request and response on file.Read. The file.Read timeout is set to 5 sec, but all frames are sent on bus within much shorter time.
I am running the FirmwareLoader in main Node thread, so not much else is going on in that thread. My SubNode thread is casuing injected TX frames at the smae time and I can see a pattern when problem occurs. It happens when my node is broadcasting and invoking other nodes services at the same time.
I am thinking that there is a buffer issues somewhere but I have not figured out where. I am running on a Debian machine.
Adjusting socketcan txqueuelen does not make a difference.
Both threads are calling spin(50ms).
Any ideas what casing the file.Read timeout?
I am currently doing some trial and error to pinpoint the cause…