Homepage GitHub

ServiceClient timeot


#1

Hi!

I am performing a client service call to a service server with default timeout settings.
When I look in gui tool I see that the call and response looks normal, no long delay in between. However, I get a timeout on the client side (looking in uavcan::ServiceCallResult& result.getStatus() when callback is fired).

I am performing other client calls to the same server with good results (no timeout), but those responses are smaller in size.

I am using the performBlockingServiceCall() method described in tutorials to perform the calls.

Am I missing something?

Kind regards

EDIT: The other call I am doing is GetNodeInfo
Setup: Client app — Beaglebone (Debian) — LAWICEL dongle (slcan) — PC running Ubuntu as VM — Server app
The GUI is running in Ubuntu on PC


#2

I just noticed that if I reduce the amount of data in the response from server, it works!

Can it be a buffering issue in LAWICEL CANUSB dongle?
Has someone encountered similar issues?


#3

After further investigation, I notices that one server response CAN frame is missing on client side.
In the screendump: candump tool on client side is telling me that one frame is missing (red arrow).


(Pavel Kirienko) #4

Looks like your SLCAN adapter is losing frames. Which is unfortunate but I can’t immediately find a robust solution, the only thing that comes to mind is to somehow throttle the data that is sent to the adapter. Consider either adding a throttling option to the PyUAVCAN SLCAN driver (a PR would be useful for people with similar issues), or just complaining to the vendor of your adapter.


#5

Yes it looks like so… I will replace my PC node with another embedded device to confirm it. Perhaps you suggested adapter works better? The one from 8…something…

Thanks for the reply!


(Pavel Kirienko) #6

Off the top of my head I can suggest 8devices USB2CAN and of course Zubax Babel.


#7

Thanks! :+1: