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