Closed cperkulator closed 5 months ago
Please, look at the doc here : https://udsoncan.readthedocs.io/en/latest/udsoncan/client.html#suppress-positive-response
Ah nice! thanks for the response!
@pylessard, using your method proposed, I'm having an issue where I am calling tester_present in a thread. using the context manager turns off all positive responses for that Client instance. So when I call start_routine
and expect a response I don't get one. Any suggestions there? probably need a lock to make sure to UDS routine don't run at the same time.
The lib is not thread safe. Use it in a single thread
Would you be open to adding my PR in that case? that would be really all you need to do to prevent the issue as I mentioned
Not against, but I'm sure you're doing something fundamentally wrong. Why do you even have threads?
just have a diagnostic session where we periodically need to send the tester_present
message to keep the session alive. rather than having tester_present
sprinkled through the code, I'd rather have a context manager kick off a thread that just periodically transmits it.
We also have the issue where if we sleep while in the diagnostic session then we could time out because the UUT hadn't received any communication in time. so I would have to spin up a separate thread anyways or have a while loop periodically send tester_present
and keep track of time. Neither of which are very clean
Ok. Well it's risky to play across thread. If you launch a tester_present in another thread, and send another request in your main thread, the lib may confuse the 2 requests.
Put the client 100% in its own thread and trigger request using a queue or something like that
Or use a lock to use the client like you said. There is no inter-call state that needs to be kept, so it should be fine
Please, look at the doc here : https://udsoncan.readthedocs.io/en/latest/udsoncan/client.html#suppress-positive-response