This is TODO  Tue Nov 13 14:54:06 MST 2001

----------------------------------------------------------------------------

	HIGH PRIORITY TODO's 

----------------------------------------------------------------------------
Win32 Frame Parity CD and RI events.  TIOCGICOUNT is commented out in
win32termios.h to avoid SIG11's.  The source of these has not been
identified.  I could not figure this one out.  If BlackBox is run on COM1
and COM2 and you plug in a null modem cable between the ports things blow
up.  I dont know if variables is on the native side get gc'd or if there
is a bad pointer someplace.


The next bug is also report using BlackBox on Win32:
"Using all of the default settings, if I click auto-transmit it
runs for about half a second and then crashes. I've attached the log file
it gave. Sometimes it runs a little longer than others. If you enable and
disable auto-transmit repeatedly it seems to help it crash faster. This
looks like a fairly repeatable way to cause the problem so hopefully
debugging would be easier."  I'm going to try looking at this tonight.

And the final bug report is reported on FreeBSD 4.5 with some in house
software:

"Okay, now the application runs.  I don't get a sig11, but my application
freezes when it tries to talk to the modem.  The user has access to the
modem as minicom works on that modem.  This application works well under
windows with the JavaComm from Sun."


Sat Jul 28 09:55:37 MDT 2001

----------------------------------------------------------------------------

	REMAINING TODOS

----------------------------------------------------------------------------

The following TODO's are known to need work but will not be implmented in the
near future.

DSR does not work reliably for some people.  contrib/DSR-workaround.java
contains a workaround the Ken Eisner contributed.  If you are able to reproduce
the problem and find a fix for RXTX please let the maintainer know.

Buffer Size is just a var.  No memory is allocated.  This was done to duplicate
the behavior in the behavior table in javax.comm.CommPort.html.  Its not clear
to me if the buffers are just mallocs or modem buffers.  Any experts there?
(its probably refering to fopen()/fread()/fwrite()/fclose() which may or may
not be of interest to someone)

While looking through the blackdown mail list, it was obvious that some people
really want printer support.  Here is a chance to put it in themselves.

ParallelPort and CommPortIdentifier files are provided so you can start 
implementing right away without worrying about how automake works.  They are 
not written in stone.  If you want to do it differently feel free.
The good side is the stuff compiles as is.  Write was tested on a printer.

Currently (rxtx-1.4-5) sun's jdk (version 1.2.2_006) with native threads is 
locking up with multiple open()/closes().  Its ugly.   The stack trace is 
useless.  No insight from jdb.  The green threads are working.

I'd suggest avoiding native threads with 1.2.2_006 unless you can figure out
whats going wrong.

----------------------------------------------------------------------------

	Porting Status.

----------------------------------------------------------------------------

Irix SerialPort support
	I've heard it works.  I didnt get an exact diff back but it should work.
	rxtx-1.5 has not been tested.  Last report was that the library built
	but there was unsatified link errors when an application was run.

	The following showed up in the build:

	/usr/include/standards.h:128: warning:  `_NO_POSIX' redifined
	/usr/include/standars.h:156: warning: `_NO_XOPEN4' redefined
	ld32: WARING 84: /usr/lib32/libc.so is not used for resolving any symbol

*BSD SerialPort support
	freebsd serial works.
	kernel specific implementations
	possibly a buggy event loop.

AIX
	It has not been confirmed that AIX works.  I've heard of people building
	it though

WinCE
	WinCE should work now

The following should work with Serial communication.  Sometimes breakage slips
in.

	Solaris (x86/Sparc), OpenUnix, UnixWare, Digital Unix, True64,
	Mac OS X, HP-UX, Win32.

If you would like to donate ssh access for any of these for compile tests before
release contact taj@www.linux.org.uk.  We have Solaris x86 2.6 and 2.8.  Also
a DEC UDB without an OS.  Binaries will be offered if access to build boxes is
 provided.

Win95/98/ME/NT/2K/XP with mingw32

	Long story there.  Ever put together a few hundred lines of code for
	fun and then have to support it 4 years later?
	
	It started as mentioned with some toy code while playing with cross
	compilers.
	The Wayne Roberts provided many improvements. 
	Another big push was made after this.
	The code should be fairly good now.
	Some of the builds are hairy.

	The library was tested  (rxtx-1.5-4).  The library built and installed
	using lcc and mingw32(on windows and from linux)
	The library passed multiple tests after rxtx-1.5-7.

	files:
		SerialImp.c   termios based JNI code
		SerialImp.h            ""
		termios.c      termios implementation for win32
		win32termios.h         ""
		init.c  lcc dll support
		init.cc mingw32 dll support
		fixup.c mingw32 dll support
		Makefile.lcc  static Makefile for building with lcc
		Makefile.cc   static Makefile for building with mingw32

	The following other options are possible but not started

		use cygwin.dll and release rxtx under the GPL
		replace SerialImp.c/h with something that does not use termios.

	win32 API documentation:
		ftp://ftp.cs.virginia.edu/pub/lcc-win32/win32hlp.exe
	Microsoft Online Library:
		http://msdn.microsoft.com/
	Serial API doc:
		http://msdn.microsoft.com/library/techart/msdn_serial.htm

BeOS
	BeOS support is in the early stages.  It should read and write bytes
	See the BeOS documentation for more information.  See rxtx-2.1 for 
	details.  This effort is mostly abandoned.

----------------------------------------------------------------------------

	File specific thoughts

----------------------------------------------------------------------------
RXTXPort.java
	framing control -?-
	buffer control -?-
	look for FIXME

ParallelPort support.  Needs some code.
	files:
		ParallelImp.c stubs 
                      A  large fraction of the stubs are filled in now.
		ParallelImp.h
		LPRPort.java similar to RXTXPort.java + stubs.
	Printer support is working with simiple print tests.
	Full support for printing will be put in when 2.4 linux kernels
	are mainstream.
	
----------------------------------------------------------------------------
	From This point on, You need to use rxtx 1.5.  All of this work is 
	being done in the development branch of the cvs archive.

	cvs checkout -r commapi-0-0-1 rxtx-devel 

	gets the recent work.
----------------------------------------------------------------------------

RS485 Support

	This is intended to be an rs232->rs485 driver.
	The basic layout is in place with no native implementation.

	devices are not coded into RXTXDriver.java see /dev/ttyS0 and gang
	for examples.
	Nothing is carved in stone.  Changes will probably be needed in
	several of the files.

	So far the only significant difference between RS485Imp.c and RXTXImp.c
	is writeByte and writeArray raise and drop DTR as needed.  I've not
	spent a large amount of time on this.  It compiles.  I need to find
	an RS485 device to test this.

	I could picture enumerating the devices on the bus similar to
	enumerating ports with 232 comm.  It could be possible to build
	the packets with vendor specific bits.

	files:
		RS485.java
		RS485Port.java
		RS485PortEvent.java
		RS485PortEventListener.java
I2C Support

	The basic layout is in place with no native implementation.
	devices are not coded into RXTXDriver.java see /dev/ttyS0 and gang
	for examples.
	Nothing is carved in stone.  Changes will probably be needed in
	several of the files.

	I want I2C support for a recycling infusion mash system (home brewery)
	I'm looking at building.  Who said there isnt free beer?

	files:
		I2C.java
		I2CPort.java
		I2CPortEvent.java 
		I2CPortEventListener.java

	I'll be returning to this after I order the parts for dallas semi.

CommPortIdentifier support. Needs some code.

	This is starting to shape up.  Maybe 100 lines from a the full
	montey.  Grep for FIXME for known bad spots.

	Ownership needs work.  BlackBox fires up, finds the ports and
	read/writes with the rxtx implemented comm.jar.

	This has actually expanded to a complete comm.jar implementation.
	Contact the maintainer if you have interest in working on this.
	While automatic enumeration of ports needs some work you can
	open specific ports.

	Plenty of example code can be found in commapi/samples/porting
	Please don't send in Sun's code.  

	files:
		CommDriver.java
		CommPort.java
		CommPortEnumerator.java
		CommPortIdentifier.java
		CommPortOwnershipListener.java
		SerialPort.java
		SerialPortEvent.java
		SerialPortEventListener.java
		UnsupportedCommOperationException.java
		NoSuchPortException.java
		OwnershipEventThread.java
		ParallelPort.java
		ParallelPortEvent.java
		ParallelPortEventListener.java
		PortInUseException.java
	
------------------
backwards compatibility for older Linux systems.
------------------
non Linux specific implementations
------------------
allow the library to catch sigint so it can shut down the port properly when
sent
------------------
Add more documentation.
------------------

----------------------------------------------------------------------------

	IDEAS

----------------------------------------------------------------------------

Make rxtx apps capable of being spawned from mgetty.  <gluck@tempo-services.com.au>

Lock file server for multiple users:  see src/lfd.
