Re: J1939 Questions on Intended usage

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

 



Am 15.05.21 um 14:26 schrieb Kurt Van Dijck:
> On Fri, 14 May 2021 12:04:47 +0000, Patrick Menschel wrote:
>> Do I need to open one socket per PGN I'm sending?
>> e.g.
>>
>> s1 = socket.socket(socket.AF_CAN, socket.SOCK_DGRAM, socket.CAN_J1939)
>> s1.bind(interface_name, MY_NAME, PGN_OF_TSC1, MY_SA)
>> s1.write(bytes(8))
>>
>> s2 = socket.socket(socket.AF_CAN, socket.SOCK_DGRAM, socket.CAN_J1939)
>> s2.bind(interface_name, MY_NAME, PGN_OF_EBC1, MY_SA)
>> s2.write(bytes(8))
> 
> No, you don't _need_ to. You can.
> 
> If you need quite some different PGN's, it may be more interesting to:
> s = socket.socket(socket.AF_CAN, socket.SOCK_DGRAM, socket.CAN_J1939)
> s.bind(interface_name, MY_NAME, ANY_PGN, MY_SA)
> s.sendto(bytes(8), DST_1, PGN_1)
> s.sendto(bytes(8), DST_2, PGN_2)
> ...
> 
> I'm not a python expert, I just assume something like that is possible.

Yes, the method exists

sendto()
https://docs.python.org/3/library/socket.html#socket.socket.sendto
https://github.com/python/cpython/blob/main/Modules/socketmodule.c#L4279

but apparently sockaddr_can is not yet expanded to individual parameters
as it was done with the

bind()
https://github.com/python/cpython/blob/main/Modules/socketmodule.c#L2207

Then I'll start by passing in the sockaddr_can struct as a first test
and make a PR to that repo in the long run.

>> What about the cyclic transmitted PGNs? Do I drop those into
>> BroadcastManager somehow?
> 
> The broadcast manager is seperate from j1939, so it's apart.

Now that would have been the cherry on the cake  ;-)
99% of J1939 are information sharing, cyclic messages of PDU2 format.
Handing the timing over to the BCM would have been super convenient.

Thanks again and 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