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