[ECOS] Select() issues
Andre-John Mas
ajmas@sympatico.ca
Thu Jan 11 01:20:00 GMT 2007
Does tcflush(fd,TCIOFLUSH) actually work?
I did a few tests, removing the code for modifying the terminal
attributes and find that I pass straight through select, if I
had hit a few enters before getting to the tcflush statement.
Andre
On 9-Jan-07, at 15:21 , Andre-John Mas wrote:
> Hi,
>
> We have a solution working on the AdderII platform, using eCos.
> One component of the application is a serial terminal, with
> termios support. While putting the UI through its paces we
> came across a small issue:
>
> If we hit enter a number of times prior to the first select()
> call, select() does not return when a key is pressed. I
> thought that it could be to a full UART buffer, but trying
>
> cin.ignore()
>
> or
>
> tcflush(fd,TCIOFLUSH)
>
> prior to the select does not fix the issue.
>
> My code looks something as follows:
>
> struct termios ts, ots; /* termios setting, old termios setting */
> int fd = STDIN_FILENO;
> struct timeval tv;
> struct timeval *tvPtr = NULL;
>
> tcgetattr( fd, &ts );
> ots = ts;
> ts.c_flag &= ~(ICANON);
> tcsetattr(fd, TCSAFLUSH, &ts);
>
> if ( this->timeout > -1 )
> {
> tv.tv_sec = this->timeout;
> tv.tv_usec = 0;
> tvPtr = &tv;
> }
>
> FD_ZERO( &fds );
> FD_SET( STDIN_FILENO, &fds );
>
> int result = select(fd + 1, &fds, NULL, NULL, tvPtr);
>
> Am I missing something? Any help would be appreciated.
>
> Andre
>
>
>
> --
> Before posting, please read the FAQ: http://ecos.sourceware.org/fom/
> ecos
> and search the list archive: http://ecos.sourceware.org/ml/ecos-
> discuss
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss
More information about the Ecos-discuss
mailing list