Open JackSlateur opened 1 week ago
Could this issue be fixed with the timeout option I saw in the README ?
No, timeout is a way to flush buffers earlier when certain frame IDs are present. This should guarantee a minimum latency for important frames.
With tcp, are trames expired some time, or are they kept around forever, until successfuly emitted ?
They are kept forever until they can be sent once they are in the buffer of the CAN thread. They may however be dropped if the buffer of the CAN thread is already full.
Is there any reasons to use TCP vs SCTP ?
The SCTP transport is basically a reliable version of the UDP protocol as both send datagrams. TCP was added later and uses a binary stream instead. In general I recommend to use TCP, especially since you will have an easier time setting up routing / firewalling.
Regarding your setup: Since sending a CAN frame relies on successful arbitration of a physical bus, this behavior is expected. Actually cannelloni assumes that the CAN busses are working in general, as there is no special error handling in place to detect a broken bus which results in e.g. dropping frames instead of sending them.
If you cannot guarantee that the bus cannelloni is writing to is actually always working, I suggest to connect two virtual CAN interfaces (vcan) and then use e.g. cangw
to write from the vcan
interface to the physical interface. Maybe the cangw
already reacts correctly to these state changes. This way you will also not get "stale" frames stuck in buffers. You can follow this guide on filtering and just pass all frames.
Hello, We are trying to use cannelloni with the following setup On one side of the tcp tunnel, some equipement, which generates lots of CAN trames On the other side of the tunnel, an OBD Y cable:
The data reader is passive/disabled most of the time : in this case, nobody acks the CAN trames and cannelloni is stuck with errors ("buffer full" etc)
When the data reader activates, lots of frames are sent, most of which are old (probably stuck on some buffer)
Could this issue be fixed with the timeout option I saw in the README ? With tcp, are trames expired some time, or are they kept around forever, until successfuly emitted ? Is there any reasons to use TCP vs SCTP ?
Thank you