Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

TCPSER4J Modem Emulator development

329 views
Skip to first unread message

Jim Brain

unread,
Apr 2, 2005, 1:34:33 AM4/2/05
to
To address some limitations in my tcpser modem emulator
(http://www.jbrain.com/pub/linux/serial), I've been working on a new
version that is Java based.

Firstly, comments about any hate of Java should be directed to /dev/null
or similar :-)

tcpser4j is a piece of software that runs on a PC/Mac/Workstation and
turns a regular rs232 port into an emulated Hayes compatible modem.
Instead of dialing out over phone lines, this modem uses TCP/IP for the
connection. tcpser4j can handle both incoming and outgoing calls. It
is most useful to place vintage BBS systems online as telnet BBSes.

The original version of tcpser was a single 'C' codebase, but to get
Win32 support I needed cygwin1.dll. That is a problem at times, and
there are a number of older versions of the DLL out there that do not
work with the app. As well, baud rates less than 300 seem to be
non-functional in the DLL. I can't legally redistribute the DLL in my
archive either.

Moving to Java addressed those issues, and it also allowed the codebase
to become more dynamically loadable, or reloadable.

The new version contains the following features found in the original:

o Multi-platform support
o Support for all normal and extended Hayes AT commands, including
multi-command strings
o Proper S register support, including changing line terminator,
linefeed char, guard time, etc.
o Correct AT command response codes, including abbreviated numeric codes
and Hayes Smartmodem limited response code emulation.
o Tracing abilities (see what is being sent on the wire)
o Phone book aliases (alias 555-1212 to servername:portnumber)
o Multi-line support (multiple "modems" listen on one IP port, like
modem pool)
o Proper DCD support (with modified null modem cable)
o Very good Hayes modem emulation
o Inbound and outbound call support
o Support for sending text files or raw text to local and remote sides
for events like BUSY, ANSWER, TIMEOUT, NO_ANSWER, etc.
o Support for inverting the DCD line
o Proper support for +++ Hayes escape sequence
o Support for handling NVT sequence negotiation when "dialing" telnet
servers


The new version hopes to better the original in a number of ways:

o Java codebase, can be run on any platform with a 1.2+ JRE
o Uses the RXTX Comm Library, available for most platforms.
o Extensive logging flexibility. Users should be able to cater logging
to their heart's desire
o Better support for AT command set. Default S register setting and
querying now supported, for example.
o Multi-modem bank support (configure 2 modems on 1 port, 3 on another,
etc.)
o XML based configuration file easier to use than command line switches
o Phone book aliases now loaded from file.
o Multiple Phone books, with phone book delegation. Modem has a modem
book, which checks pool book if no results. pool book checks master
book if no match found in pool book.
o Support for remote administration GUI
o TCP232 option. Connect to the server via TCP/IP port and issue AT
modem commands. This is best used with an emulator like VICE that
emulates a rs232 interface by conecting to a TCP/IP port. It can also
be used to test modem operation. DCD operation is not supported in this
mode.
o Remote232 option. This allows one to use RS232 ports on on the local
machine. If your BBS or vintage PC is by another PC, but you want
tcpser4j to run on a server, use this option. the RS232 port need only
be on a machine reachable via TCP/IP, so it could be across the house,
the state, the country, or the world. All control lines are preserved
in this mode.
o captive modem support. If configured, soft-modem will listen to IP
port and real modem. This will allow existing dialup BBS systems to add
telnet option while preserving dialup user support. In this mode, if
telnet access is active, captive modem will be placed off-hook, and will
be placed on-hook when telnet user logs off. Outbound calls will also
be routed, so atdtjbrain.com will go out over IP, while atdt431-7754
will use modem. (this is still under development)
o Better support for +++ sequence timing.
o Support for extended error code reporting (i.e.: "NO CARRIER (Server
Refused Connection)")
o Support for adding new modem commands to better emulate specific modem
variants

I'm pretty much done with the base code, and am looking for some folks
who would be interested in helping to test this codebase in some
situations with different vintage platforms and send bug reports. As
it's an all-new codebase, I need to do a shakedown. Initial testing has
been good, but I only have so many test scenarios here.

I'm also interested in ideas folks might have. Some have asked for
hooks to add a chat room in the unit for folks who get busy signals when
dialing in. I'm looking into that option, and some others. Most will
be support via dynamic classes.

Finally, I'm looking for someone to help with the Remote GUI
Administration component.

The codebase is available at:

http://www.jbrain.com/pub/xplatform/serial/tcpser4j-2.0alpha.zip.

Windows users need only unzip and execute run.bat. Other platforms need
to install the appropriate RXTXComm JNI library
(http://users.frii.com/jarvi/rxtx/) for that platform and tweak the run
script to suit. Since I can redistribute the RXTX codebase, I may add
the various libraries in a later release. Please send run scripts for
other platforms.

Notes:

I preloaded all of the telnet BBS systems I know of into the master
phone book. Please help me add to the list.

As well, I created my own protocol for encapsulating serial line status
into a TCP/IP datastream with the serial data. I had once saw another
application that provided remote serial ports, but was unsuccessful in
finding a current reference. If someone has a link and the existing
protocol will work for this project, I will change my code to use the
existing protocol.

I have not prepared a proper README file for tcpser4j as yet. Please
use information from the current tcpser project archive, or email me if
you have trouble.

I have tested the IP232 port option with the WinVICE emulator configured
to send serial data to a remote IP port. VICE 1.16 has bugs with TCP/IP
serial option, but 1.15 works. However, I have not yet been able to
test the ACIA IP emulation in 1.15, and the user port emulation fails if
custom RS232 routines (the George Hug routines, for example) are used.
Normal KERNAL RS232 works fine.

Jim Brain


--
Jim Brain, Brain Innovations
br...@jbrain.com http://www.jbrain.com
Dabbling in WWW, Embedded Systems, Old CBM computers, and Good Times!

Forty Two

unread,
Apr 2, 2005, 9:57:37 AM4/2/05
to

This sounds great, maybe I can finally get my GBBS Pro board to think
it is talking to an actual modem.

Jim Lawless

unread,
Apr 2, 2005, 11:57:35 AM4/2/05
to
On Sat, 02 Apr 2005 06:34:33 GMT, Jim Brain <br...@jbrain.com> wrote:

>To address some limitations in my tcpser modem emulator
>(http://www.jbrain.com/pub/linux/serial), I've been working on a new
>version that is Java based.

When do you sleep?

Is there a need for an extension scripting system? I've had good luck
in plugging in Beanshell as an extension language ( ...and have had
good luck with JACL and Jython too ... but Beanshell's my fave... )

...people could then write their own busy-signal add-ons and such
without having to contribute to the official distribution. I guess
the tricky part would be figuring out where to put all the hooks.

Jim Lawless | CMD2EXE Convert batch files to single EXE
ji...@radiks.net | MailSend Command-line Internet Mailer (SMTP)
http://www.mailsend-online.com - http://www.radiks.net/~jimbo

Jim Brain

unread,
Apr 2, 2005, 3:18:46 PM4/2/05
to
Jim Lawless wrote:
> On Sat, 02 Apr 2005 06:34:33 GMT, Jim Brain <br...@jbrain.com> wrote:
>
>
>>To address some limitations in my tcpser modem emulator
>>(http://www.jbrain.com/pub/linux/serial), I've been working on a new
>>version that is Java based.
>
>
> When do you sleep?

What is that? :-)

> Is there a need for an extension scripting system? I've had good luck
> in plugging in Beanshell as an extension language ( ...and have had
> good luck with JACL and Jython too ... but Beanshell's my fave... )

I think there most definitely is. I've had the following requests:

o When all modems busy, dump caller into a chat area or some other item,
and then place them int the BBS when lines become available.
o Filters, to sit in the pipeline. A PETSCII<->ASCII converter is a
trivial one, but others might be useful as well. Someone had suggested
inserting a spell checker into the stream when folks are in edit mode.
Not a trivial filter, but that's the place to put it.
o The ability to not only send files in the Messages section, but also
spawn apps (a batch file that increments a counter to callers, etc.
o The ability to notify something when a caller arrives, leaves, times
out, etc. COuld support a web page stating (Dial now! 2 lines open!) or
similar.

The idea would be to capatilize on Java's dynamic nature.

> ....people could then write their own busy-signal add-ons and such


> without having to contribute to the official distribution. I guess
> the tricky part would be figuring out where to put all the hooks.

If you look at the code now, there is ModemCore, which is a complete
modem, and ExtModemCore, which extends it. This is how I was adding on
the non-core modem features, like text files, and the phone book.

The code is very event based now, so it's off to a good start. I know a
few areas where it needs to be reritten to use best OO practices, but
there comes a time when one needs to let your creation out of the cage
and see what it does.

Jim

Oldbitcollector

unread,
Apr 2, 2005, 6:13:46 PM4/2/05
to
> tcpser4j is a piece of software that runs on a PC/Mac/Workstation and
> turns a regular rs232 port into an emulated Hayes compatible modem.
> Instead of dialing out over phone lines, this modem uses TCP/IP for the
> connection. tcpser4j can handle both incoming and outgoing calls. It
> is most useful to place vintage BBS systems online as telnet BBSes.

I had a chance to play with TCPser4j this evening. Great Software Jim!
I managed to get it working with WinVICE, and compiled a page
for anyone attempting to do the same thing..

Here's how to do TelBBS dialup using TCPser4j and WinVICE..
http://www.orrville.net/winvicedialup/

Oldbitcollector

----== Posted via Newsfeeds.Com - Unlimited-Uncensored-Secure Usenet News==----
http://www.newsfeeds.com The #1 Newsgroup Service in the World! 120,000+ Newsgroups
----= East and West-Coast Server Farms - Total Privacy via Encryption =----

Jim Brain

unread,
Apr 2, 2005, 9:21:47 PM4/2/05
to
Oldbitcollector wrote:
>>tcpser4j is a piece of software that runs on a PC/Mac/Workstation and
>>turns a regular rs232 port into an emulated Hayes compatible modem.
>>Instead of dialing out over phone lines, this modem uses TCP/IP for the
>>connection. tcpser4j can handle both incoming and outgoing calls. It
>>is most useful to place vintage BBS systems online as telnet BBSes.
>
>
> I had a chance to play with TCPser4j this evening. Great Software Jim!
> I managed to get it working with WinVICE, and compiled a page
> for anyone attempting to do the same thing..
>
> Here's how to do TelBBS dialup using TCPser4j and WinVICE..
> http://www.orrville.net/winvicedialup/

Nice page.

I have confirmation from Andreas Boose that VICE has some timing issues
with the virtual RS232 routines, so only some terminal SW will work at
present. Hopefully, that will be addressed in a later version of VICE.

Cameron Kaiser

unread,
Apr 3, 2005, 1:42:04 AM4/3/05
to
Jim Brain <br...@jbrain.com> writes:

>>When do you sleep?

>What is that? :-)

As a recent father, I imagine he doesn't. ^^

--
Cameron Kaiser * cka...@floodgap.com * posting with a Commodore 128
personal page: http://www.armory.com/%7Espectre/
** Computer Workshops: games, productivity software and more for C64/128! **
** http://www.armory.com/%7Espectre/cwi/ **

ano...@netscape.net

unread,
Apr 3, 2005, 8:29:04 AM4/3/05
to

Jim Brain wrote:
<snip>

>
> Windows users need only unzip and execute run.bat. Other platforms
need
> to install the appropriate RXTXComm JNI library
> (http://users.frii.com/jarvi/rxtx/) for that platform and tweak the
run
> script to suit. Since I can redistribute the RXTX codebase, I may
add
> the various libraries in a later release. Please send run scripts
for
> other platforms.

<snip>

When I execute run.bat on my Win98SE system (running Sun Java Plug-in
1.4.2_07), I get the following:

C:\tcpser>run

C:\tcpser>set
PATH=.;lib\rxtxSerial.dll;C:\WINDOWS;C:\WINDOWS\COMMAND;C:\;C:\CDR
OM;C:\BRCD\BIN;C:\BRCD\COMMAND;C:\PROGRA~1\GRISOFT\AVG6;C:\BORLANDC\BIN;

C:\tcpser>java -cp
lib\tcpser4j-2.0alpha.jar;lib\dom4j-full.jar;lib\RXTXcomm.jar
;lib\log4j-1.2.5.jar;. org.jbrain.tcpser4j.TCPSerial config.xml
Exception in thread "main" java.lang.NoClassDefFoundError:
org/jbrain/tcpser4j/TCPSerial


Ben

Jim Brain

unread,
Apr 3, 2005, 2:34:46 PM4/3/05
to
ano...@netscape.net wrote:
> <snip>
>
> When I execute run.bat on my Win98SE system (running Sun Java Plug-in
> 1.4.2_07), I get the following:
>
> C:\tcpser>run
>
> C:\tcpser>set
> PATH=.;lib\rxtxSerial.dll;C:\WINDOWS;C:\WINDOWS\COMMAND;C:\;C:\CDR
> OM;C:\BRCD\BIN;C:\BRCD\COMMAND;C:\PROGRA~1\GRISOFT\AVG6;C:\BORLANDC\BIN;
>
> C:\tcpser>java -cp
> lib\tcpser4j-2.0alpha.jar;lib\dom4j-full.jar;lib\RXTXcomm.jar
> ;lib\log4j-1.2.5.jar;. org.jbrain.tcpser4j.TCPSerial config.xml
> Exception in thread "main" java.lang.NoClassDefFoundError:
> org/jbrain/tcpser4j/TCPSerial

That is strange. I've had successful reports from others using Windows.
You could try it the long form way:

SET
CLASSPATH=lib\tcpser4j-2.0alpha.jar;lib\dom4j-full.jar;lib\RXTXcomm.jar;lib\log4j-1.2.5.jar
java org.jbrain.tcpser4j.TCPSerial config.xml

And see if that works.

Jim

Jim Lawless

unread,
Apr 3, 2005, 4:51:40 PM4/3/05
to
On 3 Apr 2005 05:29:04 -0700, "ano...@netscape.net"
<ano...@netscape.net> wrote:

>
>When I execute run.bat on my Win98SE system (running Sun Java Plug-in
>1.4.2_07), I get the following:
>
>C:\tcpser>run
>
>C:\tcpser>set
>PATH=.;lib\rxtxSerial.dll;C:\WINDOWS;C:\WINDOWS\COMMAND;C:\;C:\CDR
>OM;C:\BRCD\BIN;C:\BRCD\COMMAND;C:\PROGRA~1\GRISOFT\AVG6;C:\BORLANDC\BIN;
>
>C:\tcpser>java -cp
>lib\tcpser4j-2.0alpha.jar;lib\dom4j-full.jar;lib\RXTXcomm.jar
>;lib\log4j-1.2.5.jar;. org.jbrain.tcpser4j.TCPSerial config.xml
>Exception in thread "main" java.lang.NoClassDefFoundError:
>org/jbrain/tcpser4j/TCPSerial
>

I don't see anywhere in your path where you're pointing to a JRE or
JDK ... ( or am I missing something? )

Is it possible that you're running Microsoft's JVM in this case?

ano...@netscape.net

unread,
Apr 3, 2005, 6:52:13 PM4/3/05
to

Jim Lawless wrote:
> On 3 Apr 2005 05:29:04 -0700, "ano...@netscape.net"
> <ano...@netscape.net> wrote:
>
> >
> >When I execute run.bat on my Win98SE system (running Sun Java
Plug-in
> >1.4.2_07), I get the following:
> >
> >C:\tcpser>run
> >
> >C:\tcpser>set
> >PATH=.;lib\rxtxSerial.dll;C:\WINDOWS;C:\WINDOWS\COMMAND;C:\;C:\CDR
>
>OM;C:\BRCD\BIN;C:\BRCD\COMMAND;C:\PROGRA~1\GRISOFT\AVG6;C:\BORLANDC\BIN;
> >
> >C:\tcpser>java -cp
> >lib\tcpser4j-2.0alpha.jar;lib\dom4j-full.jar;lib\RXTXcomm.jar
> >;lib\log4j-1.2.5.jar;. org.jbrain.tcpser4j.TCPSerial config.xml
> >Exception in thread "main" java.lang.NoClassDefFoundError:
> >org/jbrain/tcpser4j/TCPSerial
> >
>
> I don't see anywhere in your path where you're pointing to a JRE or
> JDK ... ( or am I missing something? )
>
> Is it possible that you're running Microsoft's JVM in this case?
>
> Jim Lawless | CMD2EXE Convert batch files to single EXE
> ji...@radiks.net

Good point. I neglected to select unzip with original dirs first time.
2nd time, put it in a subdir. Still got error, until I unzipped it to
the root of my hard drive.

Now I get "Out of environment space" error - appears my path is too
long...

Ben

ano...@netscape.net

unread,
Apr 3, 2005, 6:55:34 PM4/3/05
to

Jim Brain wrote:
> ano...@netscape.net wrote:
> > <snip>
> >
> > When I execute run.bat on my Win98SE system (running Sun Java
Plug-in
> > 1.4.2_07), I get the following:
> >
> > C:\tcpser>run
> >
> > C:\tcpser>set
> > PATH=.;lib\rxtxSerial.dll;C:\WINDOWS;C:\WINDOWS\COMMAND;C:\;C:\CDR
> >
OM;C:\BRCD\BIN;C:\BRCD\COMMAND;C:\PROGRA~1\GRISOFT\AVG6;C:\BORLANDC\BIN;
> >
> > C:\tcpser>java -cp
> > lib\tcpser4j-2.0alpha.jar;lib\dom4j-full.jar;lib\RXTXcomm.jar
> > ;lib\log4j-1.2.5.jar;. org.jbrain.tcpser4j.TCPSerial config.xml
> > Exception in thread "main" java.lang.NoClassDefFoundError:
> > org/jbrain/tcpser4j/TCPSerial
>
> That is strange. I've had successful reports from others using
Windows.
> You could try it the long form way:
>
> SET
>
CLASSPATH=lib\tcpser4j-2.0alpha.jar;lib\dom4j-full.jar;lib\RXTXcomm.jar;lib\log4j-1.2.5.jar
> java org.jbrain.tcpser4j.TCPSerial config.xml
>
> And see if that works.
>
> Jim
>
>


Now that I've correctly unzipped it, I receive the following when
executing run.bat:

C:\tcpser4j-2.0alpha>set


PATH=.;lib\rxtxSerial.dll;C:\WINDOWS;C:\WINDOWS\COMMAND

;C:\;C:\CDROM;C:\BRCD\BIN;C:\BRCD\COMMAND;C:\PROGRA~1\GRISOFT\AVG6;C:\BORLANDC\B
IN;

C:\tcpser4j-2.0alpha>java -cp


lib\tcpser4j-2.0alpha.jar;lib\dom4j-full.jar;lib\R

XTXcomm.jar;lib\log4j-1.2.5.jar;. org.jbrain.tcpser4j.TCPSerial
config.xml
java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path
thrown while
loading gnu.io.RXTXCommDriver
Exception in thread "main" java.lang.UnsatisfiedLinkError: no
rxtxSerial in java
.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at
gnu.io.CommPortIdentifier.<clinit>(CommPortIdentifier.java:83)
at
org.jbrain.tcpser4j.AbstractRS232Port.<init>(AbstractRS232Port.java:4
4)
at
org.jbrain.tcpser4j.AbstractRS232Port.<init>(AbstractRS232Port.java:9
1)
at
org.jbrain.tcpser4j.RS232DCEPort.<init>(RS232DCEPort.java:55)
at
org.jbrain.tcpser4j.ModemPoolThread.<init>(ModemPoolThread.java:128)
at org.jbrain.tcpser4j.TCPSerial.main(TCPSerial.java:70)

C:\tcpser4j-2.0alpha>

My version of Java, if you need it, is:

C:\tcpser4j-2.0alpha>java -version
java version "1.4.2_07"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_07-b05)
Java HotSpot(TM) Client VM (build 1.4.2_07-b05, mixed mode)

C:\tcpser4j-2.0alpha>

ano...@netscape.net

unread,
Apr 3, 2005, 7:03:06 PM4/3/05
to
Never mind. What kind of Path statement (found in run.bat) is this? It
is the reason it couldn't be found. It starts now, but I'm not setup to
test it. It DOES pull up my Lantronix Redirector window briefly (that
is setup for both COM2 and COM3 right now).

set PATH=.;lib\rxtxSerial.dll;%PATH%

Ben ;)

Jim Brain

unread,
Apr 3, 2005, 10:34:29 PM4/3/05
to
It tries to add the dll to the PATH.

I did that to help folks out. The proper solution is to copy rxtxComm
to a system directory where other DLLs are.

Payton Byrd

unread,
Apr 5, 2005, 7:58:21 AM4/5/05
to
Jim Brain wrote:


Jim,

First I want to say, THANK YOU for doing something I had decided to do
myself after my tribulations getting DMBBS going using the currently
available software. With your Java code I'll be able to define custom
modem classes that can behave exactly how the BBS expects.

That leads me to my first question. I'm not familiar with Eclipse 3, I
spend most of my Java time in NetBeans 3.5, so I'm having some
difficulties using your Eclipse project file. I've installed the newest
Eclipse SDK 3 and JDK 1.4.2 (which Eclipse required). I finally figured
out how to import your project to the existing workspace, but I get
errors that the classpath variables "DOM4J", "GETOPT", "LOG4J", and
"RXTX" are unbound and I cannot build the project. I would assume these
are definitions within the project, but I cannot figure out where to go
to fix them. The four JAR files all show up in the lib directory of the
Package browser.

Are you going to open a SourceForge project for this? It would be
superb if you did. Also, please email me privately at payton (at)
payton byrd dot com as I want to point you in the direction of a
possible commercial opportunity for this product outside the BBS market.

--
Payton Byrd
Homepage - http://www.paytonbyrd.com
Blog - http://blogs.ittoolbox.com/visualbasic/dotnet/
Store - http://stores.ebay.com/Collectible-Commodores-and-More

Jim Brain

unread,
Apr 5, 2005, 12:39:30 PM4/5/05
to
== Quote from Payton Byrd (plb...@bellsouth.net)'s article

> First I want to say, THANK YOU for doing something I had decided
to do
> myself after my tribulations getting DMBBS going using the
currently
> available software. With your Java code I'll be able to define
custom
> modem classes that can behave exactly how the BBS expects.

No problem. I would appreciate sharing any changes or plans for
changes with me, as I can help with infrastructure changes to
accomodate custom stuff.


> out how to import your project to the existing workspace, but I
get
> errors that the classpath variables "DOM4J", "GETOPT", "LOG4J",
and
> "RXTX" are unbound and I cannot build the project. I would
assume these
> are definitions within the project, but I cannot figure out
where to go
> to fix them. The four JAR files all show up in the lib

Hmmm, I should upgrade from v2 sometime. :-)

My apologies. I started the prj using internal LIB variables, but
when I readied for packaging, I tried to make the prj as self-
sustaining as possible. I missed the dependency library
definitions. I'd just see if there is a way to define the 4 JARs
are dependencies for the prj. If you contnue to have trouble,
reply to the email I am sending, and I'll fix it in my prj file
and send it to you.

> Are you going to open a SourceForge project for this? It would
be
> superb if you did.

Actually, I would rather delegate that to someone else. I have no
issue with a SF prj, but at this point, there are few who can fix
the codebase, but many more who could take the code and shove it
into SF. If someone wanted to contribute to the prj and was
looking for a task, this would be a great one.

Also, please email me privately at payton (at)

Will do.

As a note to you and others:

I put rc3 of the code online last night. A few fixes, and a quick
proof of concept hack that allows callers to chat with each other
while waiting for the BBS line to not be busy. It's no IRC, but
the basic mechanics are in place. Right now, it is implemented as
a separate service, so it can be used with any modem emulator
(Leif's, tcpser, tcpser4j). It sits in the middle between callers
and tcpser, passing callers onto the BBS as the line becomes
free. It needs to be better integrated into the ModemPoolThread
as a Filter for all incoming callers, but I had an hour to spare
and an itch to try it out. Given the newness of the code, it
seems to work well.

Jim


Jim

Payton Byrd

unread,
Apr 5, 2005, 9:20:32 PM4/5/05
to
Jim,

I know nothing about Eclipse, so I'm definately the wrong person to fix
the references problem. I attempted to do so by ensuring the jars were
imported to the project correctly, but it still complains.

Jim Brain wrote:

Jim Brain

unread,
Apr 11, 2005, 12:41:45 AM4/11/05
to
Payton Byrd wrote:

>
> Are you going to open a SourceForge project for this? It would be
> superb if you did. Also, please email me privately at payton (at)
> payton byrd dot com as I want to point you in the direction of a
> possible commercial opportunity for this product outside the BBS market.

Payton:

Just a note I emailed ya. Nothing back, so I'm assuming my mail didn;t
get there. I also moved the code to Eclipse 3, and the RC4 online has
an E3 prj all set up.

RC4 adds supports for modem events to trigger more than files. I've
implemented audio triggers, and url triggers. exec and java class
execution triggers are soon to follow. I also added a few more trigger
types (on hook, off hook, etc.)

URL will send url data to inbound or outbound connection, but you can
use the URL hit to update a web page with information:
http://..../status?modem=1&status=busy. I also added a rudimentary set
of variables you can use in filenames (${number} will be replaced by
dialed number, for example, so you could have different audio per BBS
call. When you can trigger java code, you could write a small script
that audo-logs you into the appropriate BBS, based on using this variable.

My test for audio was to hook the pre_connect and pre_answer triggers to
the audio files V90.wav in the prj audio directory. Then, when you dial
or answer a call, you are treated to the V90 answer and line
negoatiation handshake. Very geeky and useless, but sounds cool.
Someone needs to record a dialtone and dialing DTMF sequence (or just
each digit) to hook into the dial trigger for a complete retro dialing
sequence.

Happy hacking.

Jim

Payton Byrd

unread,
Apr 11, 2005, 8:18:51 AM4/11/05
to
Thanks, Jim! I did get your email but have been beyond busy and hadn't
had time to test out the new Eclipse project and test stuff out. I was
planning to do that this weekend but got drafted by the honey-do corps
and wound up building a 12" retaining wall all weekend. :)


Jim Brain wrote:


--

Jim Brain

unread,
Apr 12, 2005, 1:23:19 AM4/12/05
to
Payton Byrd wrote:
> Thanks, Jim! I did get your email but have been beyond busy and hadn't
> had time to test out the new Eclipse project and test stuff out. I was
> planning to do that this weekend but got drafted by the honey-do corps
> and wound up building a 12" retaining wall all weekend. :)

I know how that goes. Just wanted to make sure the mail got there.

Just a note that the code is now at RC6. RC5 was some small bugfixes
and verify operation on Linux. RC6 was more subtle bugfixes (when you
answer a call, does the modem switch into data mode before or after you
go off hook? :-) And, added a neat feature that allows developers to
launch java classes as events happen. I created a sample one that I
attached to the "dial" event. It reads the current phone number, and
"dials" it via sound clips. It obeys register S11 for inter-tone delay
(ms) and S8 for comma delay time (seconds). It treats a,b,c, as 2,
d,e,f as 3, etc. I then found some more samples and fleshed out a
complete dialing sequence (dialtone, dial, ring, negotiate). More
bugfixes and some code restructuring, etc.

I'm probably gonna let the code ride for a spell now, as it's firm
enough for Jim Lawless to start adding BeanShell as a scripting engine
triggered off events (Jim, just have a class that implemented
EventAction...), and it's pretty complete.

I considered my work done when I "dialed" my local Linux box from the
WiFi laptop with the sound on, and my wife looked at it wondering how I
managed to get a modem connection without a wire.

In reality, the current audio clips are mostly useless for the serious
user, but could be used for better purposes. It is way geeky, though
:-) I added a incoming "ring" sound for incoming calls, but it's
obviously contrived, as modems rarely had ringers. I need to clean up
the wav files (the ring has 2 rings in it, the dialtone is a bit long,
etc., but I'll let someone else bother with that.

http://www.jbrain.com/pub/xplatform/serial/

0 new messages