Not exactly the same. In the default case you are supposed to set it to the
actual bps requested, not to 9600. Could you update?
BR,
Nikos
----- Original Message -----
From: "Vincent CHAVANIS" <[email protected]>
To: <[email protected]>
Sent: Monday, February 16, 2009 12:31 PM
Subject: [PATCH] EMI_X25 smsc module support for high speed modems
Adapted paul's patch for EMI_X25 SMSC
Vincent.
P. A. Bagyenda a ιcrit :
Thanks.
On the issue of non-standard speeds, I've tested this on Mac OS X
(which uses bps value as actual speed value) with a 460800 (i.e.
non-standard) modem, and it works just fine. Said modem also works well
under Linux. I believe no issue arises since it is the user
responsibility to provide the correct speed -- and also buy a supported
modem :)
--------------------------------------------------------------------------------
diff -rauw /gateway-cvs/gw/smsc/smsc_emi_x25.c
/gateway/gw/smsc/smsc_emi_x25.c
--- /gateway-cvs/gw/smsc/smsc_emi_x25.c 2009-01-14 10:24:05.000000000
+0100
+++ /gateway/gw/smsc/smsc_emi_x25.c 2009-02-16 11:20:55.000000000
+0100
@@ -496,7 +496,23 @@
/* The speed initialisation is pretty important. */
tcgetattr(fd, &tios);
-#if defined(B115200)
+
+#if defined(B921600)
+ cfsetospeed(&tios, B921600);
+ cfsetispeed(&tios, B921600);
+#elif defined(B576000)
+ cfsetospeed(&tios, B576000);
+ cfsetispeed(&tios, B576000);
+#elif defined(B500000)
+ cfsetospeed(&tios, B500000);
+ cfsetispeed(&tios, B500000);
+#elif defined(B460800)
+ cfsetospeed(&tios, B460800);
+ cfsetispeed(&tios, B460800);
+#elif defined(B230400)
+ cfsetospeed(&tios, B230400);
+ cfsetispeed(&tios, B230400);
+#elif defined(B115200)
cfsetospeed(&tios, B115200);
cfsetispeed(&tios, B115200);
#elif defined(B76800)
@@ -512,9 +528,14 @@
cfsetospeed(&tios, B19200);
cfsetispeed(&tios, B19200);
#elif defined(B9600)
+ #if B9600 == 9600
+ cfsetospeed(&tios, 9600);
+ cfsetispeed(&tios, 9600);
+ #else
cfsetospeed(&tios, B9600);
cfsetispeed(&tios, B9600);
#endif
+#endif
kannel_cfmakeraw(&tios);
tios.c_cflag |= (HUPCL | CREAD | CRTSCTS);
ret = tcsetattr(fd, TCSANOW, &tios);