roland Tollenaar wrote:
Hi,

Ok the issue I posted earlier regarding the read function. It seems
that it IS recieving can messages and displaying them correctly. Only
its behaviour is not as I expected. I thought the function

rt_dev_recvfrom

would simply perform a read one frame from a buffer (which in my
experience holds a number of can messages) then exit.

By the look of things I will have to implement the aforementioned
buffer myself. I.e

run rt_dev_recvfrom in a separate thread other than my periodic task
and store an x number of messages in BUFFER that I recieve there. The
can_read() function which I implement in the periodic task must then
simply read the messages from BUFFER.

Can this be confirmed or is rt_dev_recvfrom() behaving incorrectly in my case?

rt_dev_recvfrom() reads message frames (one at a time) from an internal socket buffer (there is actually a kernel configuration option to configure the size). If no messages are available, it will block by default, but it can also be used in non-blocking mode by using the flag MSG_DONTWAIT. It seems, that your application is trying to read messages periodically in polling mode. Either you do reading and buffering in your own thread as you suggested above or you use rt_dev_recvfrom() in non-blocking mode.

Wolfgang.


_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help

Reply via email to