1 /*-------------------------------------------------------------------------
2 |   RXTX License v 2.1 - LGPL v 2.1 + Linking Over Controlled Interface.
3 |   RXTX is a native interface to serial ports in java.
4 |   Copyright 1997-2007 by Trent Jarvi tjarvi@qbang.org and others who
5 |   actually wrote it.  See individual source files for more information.
6 |
7 |   A copy of the LGPL v 2.1 may be found at
8 |   http://www.gnu.org/licenses/lgpl.txt on March 4th 2007.  A copy is
9 |   here for your convenience.
10 |
11 |   This library is free software; you can redistribute it and/or
12 |   modify it under the terms of the GNU Lesser General Public
13 |   License as published by the Free Software Foundation; either
14 |   version 2.1 of the License, or (at your option) any later version.
15 |
16 |   This library is distributed in the hope that it will be useful,
17 |   but WITHOUT ANY WARRANTY; without even the implied warranty of
18 |   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19 |   Lesser General Public License for more details.
20 |
21 |   An executable that contains no derivative of any portion of RXTX, but
22 |   is designed to work with RXTX by being dynamically linked with it,
23 |   is considered a "work that uses the Library" subject to the terms and
24 |   conditions of the GNU Lesser General Public License.
25 |
26 |   The following has been added to the RXTX License to remove
27 |   any confusion about linking to RXTX.   We want to allow in part what
28 |   section 5, paragraph 2 of the LGPL does not permit in the special
29 |   case of linking over a controlled interface.  The intent is to add a
30 |   Java Specification Request or standards body defined interface in the
31 |   future as another exception but one is not currently available.
32 |
33 |   http://www.fsf.org/licenses/gpl-faq.html#LinkingOverControlledInterface
34 |
35 |   As a special exception, the copyright holders of RXTX give you
36 |   permission to link RXTX with independent modules that communicate with
37 |   RXTX solely through the Sun Microsytems CommAPI interface version 2,
38 |   regardless of the license terms of these independent modules, and to copy
39 |   and distribute the resulting combined work under terms of your choice,
40 |   provided that every copy of the combined work is accompanied by a complete
41 |   copy of the source code of RXTX (the version of RXTX used to produce the
42 |   combined work), being distributed under the terms of the GNU Lesser General
43 |   Public License plus this exception.  An independent module is a
44 |   module which is not derived from or based on RXTX.
45 |
46 |   Note that people who make modified versions of RXTX are not obligated
47 |   to grant this special exception for their modified versions; it is
48 |   their choice whether to do so.  The GNU Lesser General Public License
49 |   gives permission to release a modified version without this exception; this
50 |   exception also makes it possible to release a modified version which
51 |   carries forward this exception.
52 |
53 |   You should have received a copy of the GNU Lesser General Public
54 |   License along with this library; if not, write to the Free
55 |   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
56 |   All trademarks belong to their respective owners.
57 --------------------------------------------------------------------------*/
58 /* gnu.io.ParallelPort constants */
59 /*  this appears to be handled in /usr/src/linux/misc/parport_pc.c */
60 #define LPT_MODE_ANY	0
61 #define LPT_MODE_SPP	1
62 #define LPT_MODE_PS2	2
63 #define LPT_MODE_EPP	3
64 #define LPT_MODE_ECP	4
65 #define LPT_MODE_NIBBLE	5
66 
67 /* some popular releases of Slackware do not have SSIZE_MAX */
68 
69 #ifndef SSIZE_MAX
70 #	if defined(INT_MAX)
71 #		define SSIZE_MAX  INT_MAX
72 #	elif defined(MAXINT)
73 #		define SSIZE_MAX MAXINT
74 #	else
75 #		define SSIZE_MAX 2147483647 /* ugh */
76 #	endif
77 #endif
78 
79 /* gnu.io.ParallelPortEvent constants */
80 #define PAR_EV_ERROR	1
81 #define PAR_EV_BUFFER	2
82 
83 /* java exception class names */
84 #define UNSUPPORTED_COMM_OPERATION "gnu/io/UnsupportedCommOperationException"
85 #define ARRAY_INDEX_OUT_OF_BOUNDS "java/lang/ArrayIndexOutOfBoundsException"
86 #define OUT_OF_MEMORY "java/lang/OutOfMemoryError"
87 #define IO_EXCEPTION "java/io/IOException"
88 #define PORT_IN_USE_EXCEPTION "gnu/io/PortInUseException"
89 
90 /*
91 Flow Control defines inspired by reading how mgetty by Gert Doering does it
92 */
93 
94 /* PROTOTYPES */
95 jboolean is_interrupted(JNIEnv *, jobject );
96 int send_event(JNIEnv *, jobject, jint, int );
97 int read_byte_array( int fd, unsigned char *buffer, int length, int threshold,
98    int timeout );
99 int get_java_var( JNIEnv *, jobject, char *, char * );
100 void report(char *);
101 void report_error(char *);
102 void throw_java_exception( JNIEnv *, char *, char *, char * );
103 void throw_java_exception_system_msg( JNIEnv *, char *, char * );
104 
105