Modify serial drivers to use cfmakeraw where applicable. Affects CFontz*,
CwLnx, EyeboxOne, MtxOrb, hd44780-lis, and serialPOS.
This commit is contained in:
@@ -16,6 +16,7 @@ v.0.5dev (ongoing development)
|
||||
* Introduce shared/defines.h to collect commonly used macros
|
||||
+ new driver: SureElec for devices made by SURE Electronics (Laurent Latil)
|
||||
* hd44780-4bit: Fix bug not checking for keypad rows 7-10 correctly
|
||||
* Modify serial drivers to use cfmakeraw
|
||||
|
||||
v0.5.3
|
||||
+ lcdexec: notification when called program finishes
|
||||
|
||||
+12
-20
@@ -216,29 +216,21 @@ CFontz_init(Driver *drvthis)
|
||||
tcgetattr(p->fd, &portset);
|
||||
|
||||
/* We use RAW mode */
|
||||
#ifdef HAVE_CFMAKERAW
|
||||
/* The easy way */
|
||||
cfmakeraw(&portset);
|
||||
#else
|
||||
/* The hard way */
|
||||
portset.c_iflag &= ~( IGNBRK | BRKINT | PARMRK | ISTRIP
|
||||
| INLCR | IGNCR | ICRNL | IXON );
|
||||
portset.c_oflag &= ~OPOST;
|
||||
portset.c_lflag &= ~( ECHO | ECHONL | ICANON | ISIG | IEXTEN );
|
||||
portset.c_cflag &= ~( CSIZE | PARENB | CRTSCTS );
|
||||
portset.c_cflag |= CS8 | CREAD | CLOCAL ;
|
||||
#endif
|
||||
if (usb) {
|
||||
/* The USB way */
|
||||
portset.c_iflag &= ~( IGNBRK | BRKINT | PARMRK | ISTRIP
|
||||
| INLCR | IGNCR | ICRNL | IXON );
|
||||
portset.c_oflag &= ~OPOST;
|
||||
portset.c_lflag &= ~( ECHO | ECHONL | ICANON | ISIG | IEXTEN );
|
||||
portset.c_cflag &= ~( CSIZE | PARENB | CRTSCTS );
|
||||
portset.c_cflag |= CS8 | CREAD | CLOCAL ;
|
||||
portset.c_cc[VMIN] = 1;
|
||||
portset.c_cc[VTIME] = 3;
|
||||
} else {
|
||||
#ifdef HAVE_CFMAKERAW
|
||||
/* The easy way */
|
||||
cfmakeraw(&portset);
|
||||
#else
|
||||
/* The hard way */
|
||||
portset.c_iflag &= ~( IGNBRK | BRKINT | PARMRK | ISTRIP
|
||||
| INLCR | IGNCR | ICRNL | IXON );
|
||||
portset.c_oflag &= ~OPOST;
|
||||
portset.c_lflag &= ~( ECHO | ECHONL | ICANON | ISIG | IEXTEN );
|
||||
portset.c_cflag &= ~( CSIZE | PARENB | CRTSCTS );
|
||||
portset.c_cflag |= CS8 | CREAD | CLOCAL ;
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Set port speed */
|
||||
|
||||
+12
-20
@@ -247,29 +247,21 @@ CFontz633_init (Driver *drvthis)
|
||||
tcgetattr(p->fd, &portset);
|
||||
|
||||
/* We use RAW mode */
|
||||
#ifdef HAVE_CFMAKERAW
|
||||
/* The easy way */
|
||||
cfmakeraw(&portset);
|
||||
#else
|
||||
/* The hard way */
|
||||
portset.c_iflag &= ~( IGNBRK | BRKINT | PARMRK | ISTRIP
|
||||
| INLCR | IGNCR | ICRNL | IXON );
|
||||
portset.c_oflag &= ~OPOST;
|
||||
portset.c_lflag &= ~( ECHO | ECHONL | ICANON | ISIG | IEXTEN );
|
||||
portset.c_cflag &= ~( CSIZE | PARENB | CRTSCTS );
|
||||
portset.c_cflag |= CS8 | CREAD | CLOCAL;
|
||||
#endif
|
||||
if (p->usb) {
|
||||
// The USB way
|
||||
portset.c_iflag &= ~( IGNBRK | BRKINT | PARMRK | ISTRIP
|
||||
| INLCR | IGNCR | ICRNL | IXON );
|
||||
portset.c_oflag &= ~OPOST;
|
||||
portset.c_lflag &= ~( ECHO | ECHONL | ICANON | ISIG | IEXTEN );
|
||||
portset.c_cflag &= ~( CSIZE | PARENB | CRTSCTS );
|
||||
portset.c_cflag |= CS8 | CREAD | CLOCAL;
|
||||
portset.c_cc[VMIN] = 0;
|
||||
portset.c_cc[VTIME] = 0;
|
||||
} else {
|
||||
#ifdef HAVE_CFMAKERAW
|
||||
/* The easy way */
|
||||
cfmakeraw(&portset);
|
||||
#else
|
||||
/* The hard way */
|
||||
portset.c_iflag &= ~( IGNBRK | BRKINT | PARMRK | ISTRIP
|
||||
| INLCR | IGNCR | ICRNL | IXON );
|
||||
portset.c_oflag &= ~OPOST;
|
||||
portset.c_lflag &= ~( ECHO | ECHONL | ICANON | ISIG | IEXTEN );
|
||||
portset.c_cflag &= ~( CSIZE | PARENB | CRTSCTS );
|
||||
portset.c_cflag |= CS8 | CREAD | CLOCAL;
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Set port speed */
|
||||
|
||||
@@ -310,29 +310,21 @@ CFontzPacket_init (Driver *drvthis)
|
||||
tcgetattr (p->fd, &portset);
|
||||
|
||||
/* We use RAW mode */
|
||||
#ifdef HAVE_CFMAKERAW
|
||||
/* The easy way */
|
||||
cfmakeraw(&portset);
|
||||
#else
|
||||
/* The hard way */
|
||||
portset.c_iflag &= ~( IGNBRK | BRKINT | PARMRK | ISTRIP
|
||||
| INLCR | IGNCR | ICRNL | IXON );
|
||||
portset.c_oflag &= ~OPOST;
|
||||
portset.c_lflag &= ~( ECHO | ECHONL | ICANON | ISIG | IEXTEN );
|
||||
portset.c_cflag &= ~( CSIZE | PARENB | CRTSCTS );
|
||||
portset.c_cflag |= CS8 | CREAD | CLOCAL;
|
||||
#endif
|
||||
if (p->usb) {
|
||||
// The USB way
|
||||
portset.c_iflag &= ~( IGNBRK | BRKINT | PARMRK | ISTRIP
|
||||
| INLCR | IGNCR | ICRNL | IXON );
|
||||
portset.c_oflag &= ~OPOST;
|
||||
portset.c_lflag &= ~( ECHO | ECHONL | ICANON | ISIG | IEXTEN );
|
||||
portset.c_cflag &= ~( CSIZE | PARENB | CRTSCTS );
|
||||
portset.c_cflag |= CS8 | CREAD | CLOCAL;
|
||||
portset.c_cc[VMIN] = 0;
|
||||
portset.c_cc[VTIME] = 0;
|
||||
} else {
|
||||
#ifdef HAVE_CFMAKERAW
|
||||
/* The easy way */
|
||||
cfmakeraw(&portset);
|
||||
#else
|
||||
/* The hard way */
|
||||
portset.c_iflag &= ~( IGNBRK | BRKINT | PARMRK | ISTRIP
|
||||
| INLCR | IGNCR | ICRNL | IXON );
|
||||
portset.c_oflag &= ~OPOST;
|
||||
portset.c_lflag &= ~( ECHO | ECHONL | ICANON | ISIG | IEXTEN );
|
||||
portset.c_cflag &= ~( CSIZE | PARENB | CRTSCTS );
|
||||
portset.c_cflag |= CS8 | CREAD | CLOCAL;
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Set port speed */
|
||||
|
||||
+20
-7
@@ -326,15 +326,28 @@ static void Setup_Port(int fd, speed_t speed)
|
||||
struct termios portset;
|
||||
|
||||
tcgetattr(fd, &portset);
|
||||
cfsetospeed(&portset, speed);
|
||||
cfsetispeed(&portset, speed);
|
||||
portset.c_iflag = IGNBRK;
|
||||
portset.c_lflag = 0;
|
||||
portset.c_oflag = 0;
|
||||
portset.c_cflag |= CLOCAL | CREAD;
|
||||
portset.c_cflag &= ~CRTSCTS;
|
||||
|
||||
/* We use RAW mode */
|
||||
#ifdef HAVE_CFMAKERAW
|
||||
/* The easy way */
|
||||
cfmakeraw(&portset);
|
||||
#else
|
||||
/* The hard way */
|
||||
portset.c_iflag &= ~( IGNBRK | BRKINT | PARMRK | ISTRIP
|
||||
| INLCR | IGNCR | ICRNL | IXON );
|
||||
portset.c_oflag &= ~OPOST;
|
||||
portset.c_lflag &= ~( ECHO | ECHONL | ICANON | ISIG | IEXTEN );
|
||||
portset.c_cflag &= ~( CSIZE | PARENB | CRTSCTS );
|
||||
portset.c_cflag |= CS8 | CREAD | CLOCAL;
|
||||
#endif
|
||||
/* Set timeouts */
|
||||
portset.c_cc[VMIN] = 1;
|
||||
portset.c_cc[VTIME] = 5;
|
||||
|
||||
/* Set speed */
|
||||
cfsetospeed(&portset, speed);
|
||||
cfsetispeed(&portset, speed);
|
||||
|
||||
tcsetattr(fd, TCSANOW, &portset);
|
||||
}
|
||||
|
||||
|
||||
@@ -274,9 +274,8 @@ EyeboxOne_init (Driver *drvthis)
|
||||
|
||||
tcgetattr(p->fd, &portset);
|
||||
|
||||
// THIS ALL COMMENTED OUT BECAUSE WE NEED TO SET TIMEOUTS
|
||||
/* We use RAW mode */
|
||||
#ifdef HAVE_CFMAKERAW_NOT
|
||||
#ifdef HAVE_CFMAKERAW
|
||||
/* The easy way */
|
||||
cfmakeraw(&portset);
|
||||
#else
|
||||
@@ -287,9 +286,10 @@ EyeboxOne_init (Driver *drvthis)
|
||||
portset.c_lflag &= ~( ECHO | ECHONL | ICANON | ISIG | IEXTEN );
|
||||
portset.c_cflag &= ~( CSIZE | PARENB | CRTSCTS );
|
||||
portset.c_cflag |= CS8 | CREAD | CLOCAL;
|
||||
#endif
|
||||
/* Set timeouts */
|
||||
portset.c_cc[VMIN] = 1;
|
||||
portset.c_cc[VTIME] = 3;
|
||||
#endif
|
||||
|
||||
/* Set port speed */
|
||||
cfsetospeed(&portset, speed);
|
||||
|
||||
@@ -408,9 +408,8 @@ MtxOrb_init (Driver *drvthis)
|
||||
|
||||
tcgetattr(p->fd, &portset);
|
||||
|
||||
// THIS ALL COMMENTED OUT BECAUSE WE NEED TO SET TIMEOUTS
|
||||
/* We use RAW mode */
|
||||
#ifdef HAVE_CFMAKERAW_NOT
|
||||
#ifdef HAVE_CFMAKERAW
|
||||
/* The easy way */
|
||||
cfmakeraw(&portset);
|
||||
#else
|
||||
@@ -421,16 +420,21 @@ MtxOrb_init (Driver *drvthis)
|
||||
portset.c_lflag &= ~( ECHO | ECHONL | ICANON | ISIG | IEXTEN );
|
||||
portset.c_cflag &= ~( CSIZE | PARENB | CRTSCTS );
|
||||
portset.c_cflag |= CS8 | CREAD | CLOCAL;
|
||||
#endif
|
||||
/* Set timeouts */
|
||||
portset.c_cc[VMIN] = 1;
|
||||
portset.c_cc[VTIME] = 3;
|
||||
#endif
|
||||
|
||||
/* Set port speed */
|
||||
cfsetospeed(&portset, speed);
|
||||
cfsetispeed(&portset, B0);
|
||||
|
||||
/* Do it... */
|
||||
tcsetattr(p->fd, TCSANOW, &portset);
|
||||
if (tcsetattr(p->fd, TCSANOW, &portset) == -1) {
|
||||
report(RPT_ERR, "%s: failed to configure port (%s)", drvthis->name, strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
/* Make sure the frame buffer is there... */
|
||||
p->framebuf = (unsigned char *) calloc(p->width * p->height, 1);
|
||||
|
||||
@@ -91,12 +91,18 @@ int hd_init_lis2(Driver *drvthis)
|
||||
/* Get serial device parameters */
|
||||
tcgetattr(p->fd, &portset);
|
||||
|
||||
#ifdef HAVE_CFMAKERAW
|
||||
/* The easy way */
|
||||
cfmakeraw(&portset);
|
||||
#else
|
||||
portset.c_iflag &= ~( IGNBRK | BRKINT | PARMRK | ISTRIP
|
||||
| INLCR | IGNCR | ICRNL | IXON );
|
||||
portset.c_oflag &= ~OPOST;
|
||||
portset.c_lflag &= ~( ECHO | ECHONL | ICANON | ISIG | IEXTEN );
|
||||
portset.c_cflag &= ~( CSIZE | PARENB | CRTSCTS );
|
||||
portset.c_cflag |= CS8 | CREAD | CLOCAL ;
|
||||
#endif
|
||||
/* Set timeouts */
|
||||
portset.c_cc[VMIN] = 1;
|
||||
portset.c_cc[VTIME] = 3;
|
||||
|
||||
|
||||
@@ -322,9 +322,8 @@ serialPOS_init (Driver *drvthis)
|
||||
|
||||
tcgetattr(p->fd, &portset);
|
||||
|
||||
// THIS ALL COMMENTED OUT BECAUSE WE NEED TO SET TIMEOUTS
|
||||
/* We use RAW mode */
|
||||
#ifdef HAVE_CFMAKERAW_NOT
|
||||
#ifdef HAVE_CFMAKERAW
|
||||
/* The easy way */
|
||||
cfmakeraw(&portset);
|
||||
#else
|
||||
@@ -335,9 +334,10 @@ serialPOS_init (Driver *drvthis)
|
||||
portset.c_lflag &= ~( ECHO | ECHONL | ICANON | ISIG | IEXTEN );
|
||||
portset.c_cflag &= ~( CSIZE | PARENB | CRTSCTS );
|
||||
portset.c_cflag |= CS8 | CREAD | CLOCAL;
|
||||
#endif
|
||||
/* Set timeouts */
|
||||
portset.c_cc[VMIN] = 1;
|
||||
portset.c_cc[VTIME] = 3;
|
||||
#endif
|
||||
|
||||
/* Set port speed */
|
||||
cfsetospeed(&portset, speed);
|
||||
|
||||
Reference in New Issue
Block a user