Re: CAN ISO-TP

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 06.05.21 um 23:28 schrieb Bartosz Zdanowicz:
>> Can you create a candump log from vcan0 to see, what's going on the bus?
>>
> On RPI after first send I got
> pi@raspberrypi:~ $ candump can0
>   can0  002   [8]  10 09 41 41 41 41 41 41
> 
> After the second message I got mentioned OSError and there is no data
> on candump. Sending again I received next frame:
> pi@raspberrypi:~ $ candump can0
>   can0  002   [8]  10 09 41 41 41 41 41 41
>   can0  002   [8]  10 09 41 41 41 41 41 41
> 
> On my local PC where I get no system Error I got one frame per every send:
>  bartosz  ~/Work/DeltaThermal/can-isotp   master  candump vcan0
>   vcan0  002   [8]  10 09 41 41 41 41 41 41
>   vcan0  002   [8]  10 09 41 41 41 41 41 41
>   vcan0  002   [8]  10 09 41 41 41 41 41 41
>   vcan0  002   [8]  10 09 41 41 41 41 41 41
>   vcan0  002   [8]  10 09 41 41 41 41 41 41
>   vcan0  002   [8]  10 09 41 41 41 41 41 41
>>
>> ...
>> So how is Python getting this information?
>>
> In general, that's the biggest issue for me. Because in my real
> application I'm using python select() and recv() on that socket. When
> this error is raised, my select() on socket deduce something is
> received and recv() function also throws an error. I just tried to get
> a minimal example that reproduces the issue which is above. In those
> cases I would expect timeout, not OSError.


As expected, timeout error on missing flow control. Since it's tx side
it just tells -ECOMM instead of -ETIMEDOUT .

https://github.com/raspberrypi/linux/blob/rpi-5.10.y/net/can/isotp.c#L10
https://github.com/raspberrypi/linux/blob/rpi-5.10.y/net/can/isotp.c#L755

Is there a specific reason why you use select.select() instead of
Socket.recv(timeout) / Socket.send() ?

Best Regards,
Patrick



[Index of Archives]     [Automotive Discussions]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]     [CAN Bus]

  Powered by Linux