Thanks Chris, there are still two things i don't understand:<br><br>1) When transmitting, the behaviour i expect from the rtems software buffer is that bytes are read from it one by one and passed to the uart hardware buffer and then serialized to the serial line. This software buffer is the raw_output buffer and the cooked buffer will not be used in this case. Is this correct?<br>
<br>2) I want to transmit a package of 82 bytes, so I set the raw_output buffer to 82. However at the other end of the transmission lines i don't receive all 82 bytes, it seems some bytes are lost. If i set the raw_output buffer bigger, say 256, it starts sending bytes that are not on the package. In a transmission, only the message bytes in the software buffer should be sent right?<br>
<br><br>Best,<br>JM<br><br><br><br><br><br><br><br><br><div class="gmail_quote">On Thu, Sep 23, 2010 at 6:49 AM, Chris Johns <span dir="ltr"><<a href="mailto:chrisj@rtems.org">chrisj@rtems.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div class="im"><br>
<br>
On 22/09/10 10:00 PM, Joćo Rasta wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Hi,<br>
<br>
I'm using rtems_termios_bufsize() to change the software RX/TX fifo size<br>
of the UART. This is greatly affecting my application results however i<br>
haven't been unable to understand how it works.<br>
<br>
The only documentation i found was<br>
<br>
rtems_status_code rtems_termios_bufsize (<br>
   int cbufsize,     /* cooked buffer size */<br>
   int raw_input,    /* raw input buffer size */<br>
   int raw_output    /* raw output buffer size */<br>
);<br>
<br>
But this leaves me with some doubts:<br>
<br>
1) Is the size in bytes? I guess it is, it's just to clarify.<br>
<br>
</blockquote>
<br></div>
Yes.<div class="im"><br>
<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
2) What is the cooked buffer and what are the implications of<br>
increasing/decreasing its size?<br>
</blockquote>
<br></div>
Cooked mode or canonical mode returns or outputs a single line at a time. I suppose this buffer needs to be big enough to hold a suitable length of line.<div class="im"><br>
<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br>
3) What are the maximum values i can use for the buffers sizes and the<br>
implications of increasing it?<br>
</blockquote>
<br></div>
I suppose the amount of memory. The buffers are just malloc'ed.<div class="im"><br>
<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br>
4) How are the default values set for these buffers if i don't use<br>
rtems_termios_bufsize()?<br>
</blockquote>
<br></div>
By initialised variables. From termios.c:<br>
<br>
static int rtems_termios_cbufsize = 256;<br>
static int rtems_termios_raw_input_size = 128;<br>
static int rtems_termios_raw_output_size = 64;<div class="im"><br>
<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br>
5) My application hangs on a write() if i set raw_output to 1. But why?<br>
<br>
</blockquote>
<br></div>
I suspect a bug or something related to the fact a 1 byte output buffer does not make sense.<br><font color="#888888">
<br>
Chris<br>
</font></blockquote></div><br>