From owner-FreeBSD-users-jp@jp.freebsd.org  Mon Oct 18 05:00:17 1999
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id FAA92171;
	Mon, 18 Oct 1999 05:00:17 +0900 (JST)
	(envelope-from owner-FreeBSD-users-jp@jp.FreeBSD.org)
Received: from kiss.jg8oom.jl1zcf.prug.or.jp (69.pool18.tokyo.att.ne.jp [165.76.223.84])
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) with ESMTP id FAA92160
	for <FreeBSD-users-jp@jp.freebsd.org>; Mon, 18 Oct 1999 05:00:15 +0900 (JST)
	(envelope-from nabe@mobile.icc.titech.ac.jp)
Received: from localhost (localhost.jg8oom.jl1zcf.prug.or.jp [127.0.0.1])
	by kiss.jg8oom.jl1zcf.prug.or.jp (8.9.3/3.7W-99052202) with ESMTP id FAA34498
	for <FreeBSD-users-jp@jp.freebsd.org>; Mon, 18 Oct 1999 05:00:00 +0900 (JST)
To: FreeBSD-users-jp@jp.freebsd.org
X-Mailer: Mew version 1.94 on XEmacs 20.4 (Emerald)
Mime-Version: 1.0
Content-Type: Multipart/Mixed;
 boundary="--Next_Part(Mon_Oct_18_04:59:47_1999_809)--"
Content-Transfer-Encoding: 7bit
Message-Id: <19991018045959H.nabe@mail.mobile.icc.titech.ac.jp>
Date: Mon, 18 Oct 1999 04:59:59 +0900
From: Shingo WATANABE / =?ISO-2022-JP?B?GyRCRU9KVRsoQiA=?=
	=?ISO-2022-JP?B?GyRCPy04YxsoQg==?= <nabe@mobile.icc.titech.ac.jp>
X-Dispatcher: imput version 990905(IM130)
Lines: 189
Reply-To: FreeBSD-users-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+990727
X-Sequence: FreeBSD-users-jp 46722
Subject: [FreeBSD-users-jp 46722] Anyone use CommAPI.tgz?
Errors-To: owner-FreeBSD-users-jp@jp.freebsd.org
Sender: owner-FreeBSD-users-jp@jp.freebsd.org
X-Originator: nabe@mobile.icc.titech.ac.jp

----Next_Part(Mon_Oct_18_04:59:47_1999_809)--
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit

$B$o$?$J$Y$G$9!#(B

$B$H$"$k;v>p$K$h$j!"(BFreeBSD $B$G%7%j%"%k%]!<%H$r;H$&(B Java $B$N%=%U%H$r;H$*$&$H(B
$B$$$8$C$F$$$k$N$G$9$,!"AGD>$KF0$+$J$$$N$G$J$s$H$+4hD%$C$F$$$^$7$?!#(B

Java $B<+BN$O$3$l$+$iJY6/$9$k$H$3$m$G!"NI$/CN$i$J$$$s$G$9$,(B FreeBSD $B$+$i;H(B
$B$($k%7%j%"%k%]!<%H$N%I%i%$%P$O(B

JAVA Comm API for FreeBSD
http://student.ulb.ac.be/~jdricot/commapi/

RXTX
http://www.frii.com/~jarvi/rxtx/

SerialPort (Commercial product)
http://www.sc-systems.com/

$B$N;0<oN`$,$"$k$h$&$G$9$M!#$=$3$G!"(BJava $B$G%7%j%"%k%]!<%H$r;H$C$F$$$k?M$K(B
$B$*J9$-$7$?$s$G$9$,(B($B>&MQ$N$O=|$$$F(B)$BA0<TFs$D$N$I$A$i$+$G$b;H$C$F$$$F!"(B

 1. $B@5>o$KDL?.$O=PMh$^$9$+!)(B
 2. DTR Set/Clear $B$O@5>o$KF/$-$^$9$+!)(B
 (3. RTS Set/Clear $B$O@5>o$KF/$-$^$9$+!)(B)

$B;d$,;H$C$?8B$j$G$O!"(BCommAPI $B$NJ}$G$O!"J8;z2=$1$GDL?.$G$-$:!"(Bstty $B%3%^%s(B
$B%I$GD4$Y$F$_$k$H(B cs6 (6bit) $B$K$J$C$F$7$^$C$F$$$^$7$?!#(BDTR $B$NJ}$bF0$+$:!#(B

RXTX $B$O!"%=!<%9%3!<%I%G%P%$%9L>$N$"$?$j$r8+$F$b(B FreeBSD $B%5%]!<%H$,(B($B;d$K(B
$B$O(B)$B2x$7$/;W$($?$N$G!"$[$H$s$I$$$8$C$F$J$$$s$G$9$,$A$c$s$HDL?.$O=PMh$J$+$C(B
$B$?$h$&$J5$$,$7$^$9(B...



$B$H$j$"$($:!"(BCommAPI $B$NJ}$G%Q%C%A:n$j$^$7$?!#7k2L!"8=>u$O2<5-$NDL$j$G$9!#(B
$B$I$J$?$+$3$l$G$A$c$s$HF0$/$h$&$K$J$C$?$+3N$+$a$F$b$i$($k$H=u$+$k$s$G$9$,!#(B

DTR Set/Clear $B$,@5>o$KF0$/$h$&$K$J$C$?!#(B

RTS Set/Clear $B$,@5>o$KF0$/$h$&$K$J$C$?$O$:$G$9!#(B
(Java $B=q$1$J$$$N$G;n$;$F$$$^$;$s!#$=$N$&$A3NG'$7$?$$$H$O;W$$$^$9$1$I!#(B)

$B%U%m!<@)8f<~$j$,%P%0%P%0$@$C$?$N$G!"(Bc_cflag $B$H$+$,GK2u$5$l$F$$$?!#(B
6bit(CS6)$B$K$J$C$F$$$?!#J8;z$,2=$12=$1$G%^%H%b$KDL?.$G$-$J$$$N$,2r>C$5$l(B
$B$?!#(B

$B0l1~(B device open $B;~$K(B tcgetattr() $B$9$k$h$&$K$7$?!#$3$l$G!"(Bstty $B%3%^%s%I(B
$B$G3NG'$7$F$b(B cchars $B$,JQ$K$J$i$J$/$J$C$?!#(B($B$3$l$GNI$$$s$@$h$J$!(B...?)


$B!t(BJava $B$N%3!<%I$+$i%G%P%C%/$7$J$$$H$J$"(B...

---
 Shingo WATANABE / nabe@mobile.icc.titech.ac.jp, nabechan@kbc.gr.jp
                                                                      JG8OOM/1


----Next_Part(Mon_Oct_18_04:59:47_1999_809)--
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="CommAPI.diff"

diff -ur src.org/org/freebsd/io/comm/libSerial.c src/org/freebsd/io/comm/libSerial.c
--- src.org/org/freebsd/io/comm/libSerial.c	Mon Jul 19 17:45:04 1999
+++ src/org/freebsd/io/comm/libSerial.c	Mon Oct 18 03:55:48 1999
@@ -107,6 +107,12 @@
     /*
      * setup communications port for default of 9600, 8, 1, none
      */
+    if (tcgetattr (fd, &tty) < 0)
+    {
+        throw_exception (env, IOEXCEPTION, "tcgetattr ", strerror (errno));
+        return;
+    }
+
     tty.c_iflag = INPCK;
     tty.c_lflag = 0;
     tty.c_oflag = 0;
@@ -161,7 +167,8 @@
     switch ((int)i)
     {
         case 0:		/* SerialPort.FLOWCONTROL_NONE */
-            tty.c_cflag &= ~ (IXON | IXOFF | CRTSCTS);
+            tty.c_iflag &= ~ (IXON | IXOFF);
+            tty.c_cflag &= ~(CRTSCTS);
             break;
         case 1:		/* SerialPort.FLOWCONTROL_RTSCTS_IN */
             tty.c_cflag |= CRTS_IFLOW;
@@ -173,13 +180,13 @@
             tty.c_cflag |= CRTSCTS;
             break;
         case 4:		/* SerialPort.FLOWCONTROL_XONXOFF_IN */
-            tty.c_cflag |= IXOFF;
+            tty.c_iflag |= IXOFF;
             break;
         case 8:		/* SerialPort.FLOWCONTROL_XONXOFF_OUT */
-            tty.c_cflag |= IXON;
+            tty.c_iflag |= IXON;
             break;
         case 12:	/* SerialPort.FLOWCONTROL_XONXOFF_IN/OUT */
-            tty.c_cflag |= IXON | IXOFF;
+            tty.c_iflag |= (IXON | IXOFF);
             break;
     }
     if (tcsetattr ((int)sd, TCSAFLUSH, &tty) < 0)
@@ -315,27 +322,27 @@
 JNIEXPORT void JNICALL Java_org_freebsd_io_comm_FreebsdSerial_deviceSetDTR
   (JNIEnv *env, jobject jobj, jint sd, jboolean flag)
 {
-    struct termios tty;
+    int value;
     
     /* get termios structure for our serial port */
-    if (tcgetattr ((int)sd, &tty) < 0)
+    if (ioctl ((int)sd, TIOCMGET, &value) < 0)
     {
-        throw_exception (env, IOEXCEPTION, "tcgetattr ", strerror (errno));
+        throw_exception (env, IOEXCEPTION, "TIOCMGET ", strerror (errno));
         return;
     }
 
     if (flag == JNI_TRUE)
     {
-        tty.c_cflag |= CDTR_IFLOW;
+        value |= TIOCM_DTR;
     }
     else
     {
-        tty.c_cflag &= ~CDTR_IFLOW;
+        value &= ~TIOCM_DTR;
     }
 
-    if (tcsetattr ((int)sd, TCSAFLUSH, &tty) < 0)
+    if (ioctl ((int)sd, TIOCMSET, &value) < 0)
     {
-        throw_exception (env, IOEXCEPTION, "tcsetattr ", strerror (errno));
+        throw_exception (env, IOEXCEPTION, "TIOCMSET ", strerror (errno));
     }
     return;
 }
@@ -348,29 +355,29 @@
 JNIEXPORT void JNICALL Java_org_freebsd_io_comm_FreebsdSerial_deviceSetRTS
   (JNIEnv *env, jobject jobj, jint sd, jboolean flag)
 {
-    struct termios tty;
-                             
-    /* get termios structure for our serial port */
-    if (tcgetattr ((int)sd, &tty) < 0)
+    int value;
+    
+  /* get termios structure for our serial port */
+    if (ioctl ((int)sd, TIOCMGET, &value) < 0)
     {
-        throw_exception (env, IOEXCEPTION, "tcgetattr ", strerror (errno));
+        throw_exception (env, IOEXCEPTION, "TIOCMGET ", strerror (errno));
         return;
     }
- 
+
     if (flag == JNI_TRUE)
     {
-        tty.c_cflag |= CRTS_IFLOW;
+        value |= TIOCM_RTS;
     }
-    else    
+    else
     {
-        tty.c_cflag &= ~CRTS_IFLOW;
+        value &= ~TIOCM_RTS;
     }
-            
-    if (tcsetattr ((int)sd, TCSAFLUSH, &tty) < 0)
+
+    if (ioctl ((int)sd, TIOCMSET, &value) < 0)
     {
-        throw_exception (env, IOEXCEPTION, "tcsetattr ", strerror (errno));
+        throw_exception (env, IOEXCEPTION, "TIOCMSET ", strerror (errno));
     }
-    return;    
+    return;
 }
 
 /*
Only in src/org/freebsd/io/comm: libSerial.c.org

----Next_Part(Mon_Oct_18_04:59:47_1999_809)----
