[GreenKeys] WRU, SELCAL, and other features in TTY-CONNECT

Eric Scace K3NA [email protected]
Tue, 27 Apr 2004 16:02:25 -0400


Hi Gil and everyone --

   Gil, some answers to your questions, based on my earlier suggestions, are marked below.

   Everyone else:  I included examples of how to use my proposed SelCal and WRU codes in the comments below.  Please review and
comment if you think there are problems.

-- Eric K3NA
   (and, yes, I used to design this stuff for a living!)

-----Original Message-----
From: [email protected]
[mailto:[email protected]]On Behalf Of gil smith
Sent: 2004 April 27 13:42
To: [email protected]
Subject: [GreenKeys] WRU, SELCAL, and other features in TTY-CONNECT

[...snip...]

- Auto-CRLF Insertion:
If enabled, counts chars until it hits a CR or a trigger count.  If it hit
the CR first, it resets the counter to zero (since this line was short
enough).  If it hits the trigger count, it waits for the next SPACE char
(so as not to break a word), and then inserts CR and LF into the tty
stream.  The trigger count will initially be 66 chars, but is
programmable.  Note this will actually insert a programmable string, so
additional carriage delay can be added as needed.

COMMENT
   For TTY machines, the inserted sequence should be CR CR LF.  Two CRs are needed to allow time for the typebox (or its equivalent)
to get back to the left margin, and to be de-bounced.
=============

- Autostart:
If enabled, detects the first char in the stream, activates a signal line
which drives an optional tty motor relay, and inserts X number of LTRS
chars into the tty stream to allow motor spool-up.  X will be programmable,
of course, but I need to know a decent initial value.  When NNNN is
received, motor is turned off.
Note that Autostart has priority over any selcal.

COMMENT:
   The following points are applicable if no SelCal is being used, or if the SelCal stuff is being implemented outside of your box:
   Carrier detect on the mark frequency should be used to power up the motor relay.  Don't insert LTRS characters; the transmitting
station will do that.  Ltrs are not needed to spin up the motor.
   If you want to be fancy, you can delay powering up the motor until you hear valid signals on both mark and space frequencies.
That's a little more precise and prevents the motor start from being triggered by slow CW.
   Important: Don't turn off the motor with NNNN!  A station may send several messages in a single transmission!  If you power off
the motor with NNNN, then the receiving station will miss the chance to copy the 2nd and subsequent messages.

   If your box is to be used to implement the selective calling procedure, then the box may follow this procedure:

   Motor start:  upon receipt of the conditioning code.  My proposed conditioning code is 12 LTRS, 5 SP, 2 CR and LF.  To allow for
some errors, your box can consider 3 SP followed by 1 CR as a valid conditioning code, and turn on the motor.

   Motor stop:  Occurs upon end of address if the station was not selected, or upon end of message.  My proposed end of address was
CR CR LF; you could use a single CR LF.  My proposed end of message was LTRS LTRS CR CR 4 LF NNNN followed by 12 LTRS; you could use
NNN as sufficient (allows for an error in the first or last N).  (The 4 LF spaces the paper down at the end of the message; the 12
LTRS gives an area of all-holes in a paper tape where the tape can be easily torn.)

   A station would be selected if it received the general selection code (e.g., ZCZC) or its specific, individual code (last 4
characters of the callsign).

   Here is an example of a general bulletin followed by a message to WB6ABC and N7UA, using the procedures which I suggested
earlier:
[carrier on] 12 LTRS, CR CR LF LTRS LTRS <<-- just to get local printers (and stations not using SelCal) in sync and on a new line.
QST DE K3NA  <<-- legal ID
12 LTRS, 5 SP, 2 CR, LF  <<-- conditioning code
ZCZC CR CR LF  <<-- general call directing code, end of address.
[text of bulletin]
LTRS LTRS CR CR LF LF LF LF NNNN 12 LTRS  <<--- end of message.
5 SP, 2CR, LF  <<-- conditioning code
6ABC N7UA CR CR LF  <<--- two call directing codes for the two targeted stations, end of address
[ text of message to wb6abc and n7ua ]
LTRS LTRS CR CR LF LF LF LF NNNN 12 LTRS  <<--- end of message.
CR CR LF LTRS LTRS DE K3NA SK  <<-- legal ID on separate line.

   If you look at this example, and compare it to the description of when motor on/off would occur, I hope it is clear how this
system works.

==============

- Selcal:
If enabled, detects a programmable sequence (callsign...) in the stream,
activates a signal line which drives an optional tty motor relay, and
inserts X number of LTRS chars into the tty stream to allow motor
spool-up.  When NNNN is received, motor is turned off.

COMMENT:  No need to insert LTRS.  Just power up the motor.  Machines will sync up in a couple of characters.  I think your box is
regenerating the received characters, so the sync up will be quick with these ideally-formed characters.
==============

- Selcal-Bulletin:
If enabled, detects a programmable sequence (BULL?) in the stream,
activates a signal line which drives an optional tty motor relay, and
inserts X number of LTRS chars into the tty stream to allow motor
spool-up.  When NNNN is received, motor is turned off.

COMMENT:  See above example.  ZCZC will be used for all bulletins, so no need for a separate selcal sequence.
==============

- Selcal-All:
If enabled, detects a programmable sequence (ZCZC?) in the stream,
activates a signal line which drives an optional tty motor relay, and
inserts X number of LTRS chars into the tty stream to allow motor
spool-up.  When NNNN is received, motor is turned off.

COMMENT:  See above comments and example.
=============

- WRU Query:
If enabled, detects a programmable sequence (WRU?) in the stream, activates
the PTT signal line for transmitter activation, sends a programmable
sequence back, then deactivates PTT.

COMMENT:  Based on my earlier suggestions, this is how a WRU would work.  The scenario is that K3NA wants to find out if DL6LAU can
copy him, before attempting to send a message to him.

[carrier on] 12 LTRS, CR CR LF  LTRS LTRS <<-- just to get local printers (and stations not using SelCal) in sync and on a new line.
QST DE K3NA  <<-- legal ID
12 LTRS, 5 SP, 2 CR, LF  <<-- conditioning code
6LAU FIGS H [carrier off]  <<-- Figs H is end of address for everyone except DL6LAU.

   At this point, everyone else except DL6LAU will have shut down.  But DL6LAU will respond with his pre-programmed response.  Since
your box is generating this automatically, there is no need for a rigid size limit.  (I think the Model 28 machines could send up to
16 characters from a special WRU response unit.)  Here is a 16 character response.

[carrier on] CR CR LF Ltrs DE DL6LAU CR CR LF [carrier off]

   At this point K3NA, now satisfied the DL6LAU is hearing him, could send DL6LAU a message using the format described earlier (and
starting from the very top):
[carrier on] 12 LTRS, CR CR LF  LTRS LTRS<<-- just to get local printers (and stations not using SelCal) in sync and on a new line.
DL6LAU DE K3NA  <<-- legal ID
12 LTRS, 5 SP, 2 CR, LF  <<-- conditioning code
6LAU CR CR LF  <<-- general call directing code, end of address.
[ text of message]
LTRS LTRS CR CR LF LF LF LF NNNN 12 LTRS  <<--- end of message.
CR CR LF LTRS LTRS DE K3NA SK  <<-- legal ID.
======================

Most of this is pretty straightforward.  The Selcal and WRU sequences, will
be programmable strings, but I need defaults to start with.

I have never done any 28 stuntbox work, but looking at a 28 doc I find that
there is more than just the selcal string involved.  eg:
- Conditioning-Code:      FIGS-H-LTRS
- Call-Directing-Code:    this is the selcal string
- End-of-Address:          CR-LF-LTRS
- (message body)
- End-of-Message:        FIGS-H-LTRS  (what happened to NNNN?)

COMMENT:  Please see the above examples for suggested defaults.  Let me know if you have any questions.
==================

I guess this is all programmable in the stuntbox, and this is only an
example.  I also imagine that the Conditioning-Code and End-of-Address only
need to be sent for compatibility with real stuntboxes.

Some other questions:
-A fixed Conditioning-Code ahead of the selcal string would prevent a
callsign in a message body from triggering an unwanted selcal.  What say ye
on Conditioning-Code?

COMMENT:  A conditioning code and end of address code is mandatory.  Otherwise, as you pointed out, the system is subject to false
selections.
=============

- What is the max size of the selcal string?

- Can the selcal string be mandated to be a fixed-length?

COMMENT:  Four characters (the last four of the station callsign) should be enough.  Portable designations should be ignored when
forming the call directing code; e.g., W2NQ/7's code will be "W7NQ".  In the unusual case of a station with a three-character call
(e.g., M0B or K1A), I would suggest the default padding character is a "Q" at the BEGINNING; e.g., "QM0B" or "QK1A".  I suggest "Q"
because Q is rarely used to form the start of a callsign.

- (same questions apply to WRU string).

COMMENT:  See WRU discussion above: it's just the call directing code plus Figs H.
=============