Non-canonical mode on OS X?
Non-canonical mode on OS X?
- Subject: Non-canonical mode on OS X?
- From: Gregory Weston <email@hidden>
- Date: Mon, 29 Aug 2005 13:42:24 -0400
I'm trying to read a Mac's built-in modem in raw mode (after some
help from this lists months ago, then a long period of downtime) and
I'm running into something annoying. When data shows up, it comes
through as a small burst (100 characters or so) followed by a brief
pause (.02 seconds, say) and then another small burst (32 characters).
The difficulty I'm having is that the read() I eventually issue
returns before the second burst shows up. Here's the setup routine.
static int set_local_mode(int inFileDescriptor)
{
int theResult = 0;
struct termios theOptions = {};
if(tcgetattr(inFileDescriptor, &theOptions) == -1) {theResult =
errno;}
cfmakeraw(&theOptions);
//theOptions.c_lflag &= ~(ICANON | ECHO); /* Clear ICANON and
ECHO. */
theOptions.c_cc[VMIN] = 1;
theOptions.c_cc[VTIME] = 5;
theOptions.c_cflag |= (CS8 | CLOCAL);
if(tcsetattr(inFileDescriptor, TCSANOW, &theOptions) == -1)
{theResult = errno;}
return theResult;
}
My understanding is that if this completes successfully, the read()
should return after once there has been a half-second interval since
the last character received. The buffer passed to read() is much
larger than the returned data, and the commented line doesn't have
any impact (c_lflag is already zero by the time we get there). Any
advice?
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden