 0.7.0 -- 02 Dec 2005
----------------------

* Bugfix: An uninitialized variable caused svxlink to crash. This bug
  showed itself when using the TclVoiceMail module.

* The PTT_PIN configuration variable now accept multiple pins. Also, it
  is now possible to specify reverse polarity if needed.
  Examples: RTS, DTRRTS, !DTR!RTS or even DTR!RTS.

* A timestamp is now printed infront of each row in the logfile. The format
  of the timestamp is controlled by the new configuration variable
  GLOBAL/TIMESTAMP_FORMAT. Some formats are affected by the setting of the
  LC_TIME, LC_ALL and LANG environment variables. Have a look at the manual
  page for "strftime" for how to construct the format string.
  The log file will be reopened if svxlink is sent the SIGHUP UNIX signal.
  This can be used when setting up logrotate to automatically rotate the
  SvxLink logs.

* Bugfix in ModuleParrot: The module timeout was not handled correctly.
  The timeout timer was reset at squelch open but then it started to
  count down directly instead of waiting until the squelch was closed.

* It is now possible to use DTMF * as part of a command. Previously it
  was only used for triggering an identification. The only difference should
  be that when typing * on the console it must be followed by a # for the
  identification to be executed. When * is received on the radio channel,
  the identification is executed on squelch close. No # needed here.

* ModuleEchoLink: A new "connect by call" feature has been added. This can
  be used if the node number is unknown or if you want to search for
  stations starting with a specific prefix. Callsigns are mapped to digits
  by using the following method: ABC=2, DEF=3, GHI=4, JKL=5, MNO=6, PQRS=7,
  TUV=8, WXYZ=9. The same mapping as on many phones. Letters are mapped to its
  corresponding digit. The star character is ignored and all other characters
  are mapped to digit 1.
  A searh command start with * and then the callsign code is entered. So if
  you want to connect to SM3SVX-L you should enter "*76378915#". Since the
  codes are not unique a list of search hits will be presented to the user.
  If the entered code ends with *, a wildcard search will be performed. So
  if you want to search for all stations starting with SM3 you enter
  "*763*#".

* ModuleTclVoiceMail: This module now can send an e-mail to the recepient
  when a new voice mail has arrived. The e-mail address to use is
  configured in the TclVoiceMail.conf file for each user.



 0.6.0 -- 09 Oct 2005
----------------------

* New vox configuration variable VOX_START_DELAY. Specify a time in
  milliseconds after the receiver has been unmuted until the vox starts
  to operate. In a simplex logic configuration the receiver is muted
  (internally in SvxLink) when the transmitter is activated and unmuted
  when the transmitter is turned off. The vox start delay can be used
  if the transceiver makes a noise when the PTT is released. This noise
  would otherwise trigger the vox.

* New module "Tcl" added. This module does not do anything in
  itself. It is just a wrapper that calls TCL functions on different
  events (squelch open/close, DTMF commands received etc). This makes
  it possible to write new modules in TCL which can be a little bit
  more convenient than doing it in C++ directly.

* New module "TclVoiceMail". This module is implemented using the new Tcl
  module. I wrote it to test the Tcl module. It is a quite simplistic
  voice mail system but it demonstrates what you can do with modules
  written in TCL.

* Added a template for writing modules in C++. It can be found in
  svxlink/modules/template in the source code tree.

* Removed configuration variable IDENT_INTERVAL and replaced it with
  two new variables: SHORT_IDENT_INTERVAL and LONG_IDENT_INTERVAL.
  Identification is now entirely handled in TCL.



 0.5.0 -- 14 Aug 2005
----------------------

* Added a highpass filter on the receiver side to filter out incoming
  CTCSS tones.

* The repeater logic now opens on squelch close rather than squelch
  open. This is so that the first announcement will not be missed
  by the opener.

* Added a more flexible subsystem for handling events that should
  be announced on the air (repeater_up, repeater_down, identify etc).
  Exactly what should be done when an event occurs is specified in
  a TCL script. This make the event system very flexible. It will
  be easier to adapt SvxLink to other languages where the order
  of words is not the same as in english. It would also be possible
  to use a speech synthesizer which generate the sounds on the fly.

* Now four different ways of activating the repeater is supported:
  1750 Hz tone burst, CTCSS, DTMF and squelch controlled. The three
  types are configured individually using the configuration
  variables OPEN_ON_1750, OPEN_ON_CTCSS, OPEN_ON_DTMF and
  OPEN_ON_SQL.

* A simple Voter has been added so that multiple receivers can
  be used with one logic. The voter works on a first come first
  serve basis. The receiver that signals squelch open first will
  be the receiver that is used. The other receivers are muted.

* Made some changes to the receiver config section:
    - VOX_HANGTIME renamed to SQL_HANGTIME and it now affects all squelch
      types.
    - SQL_UP_DET and SQL_DOWN_DET merged into one config variable SQL_DET.
    - Renamed SQL_PORT to SERIAL_PORT and SQL_PIN to SERIAL_PIN.
    - VOX_FILER_DEPTH is now given in milliseconds instead of in number
      of samples.

* It is now possible to link two logic cores together. This can for example
  be used to link a repeater to another repeater via a link tranceiver.
  Another use is if you have two repeater logics defined (e.g. 2m and 70cm)
  you can link those together. The link is activated/deactivated on command.

* Now possible to use the repeater controller with external repeater
  hardware that repeats the audio directly. Normally SvxLink plays back
  the audio that is sampled but by setting NO_REPEAT=1 in the configuration
  file this is prohibited.



 0.4.0 -- 25 Mar 2005
----------------------

* Bugfix: Crash when the parrot module was active and an echolink
  connection were coming in.

* Applied patch from Eric Jacobson: Only ident if the link has been
  transmitting. New config variable: IDENT_ONLY_AFTER_TX.

* Added roger beep for SimplexLogic.

* ModuleParrot: The TX hang bug might now have been fixed. I really hope so...

* ModuleEchoLink: Now not possible to initiate a connection to own node.

* ModuleEchoLink: Added a link idle timeout timer.

* ModuleEchoLink: Now reports the number of connected stations when an
  identification is manually triggered by a "*".

* Now announcing the CTCSS frequency at manual identification if
  REPORT_CTCSS is set.

* ModuleParrot bugfix: Leading zeros were skipped when reading back
  entered DTMF digits.

* ModuleEchoLink bugfix: Now and then right after a disconnection, the link
  was automagically reestablished. Incoming connections are now not allowed
  from the disconnected station for five seconds.

* Added a simple macro system to be able to assign short command strings
  to longer commands. See documentation for the MACROS section in the
  configuration file description.

* Now possible to use an external hardware squelch indicator via a
  serial port. Usable pins are CTS, DSR, DCD and RI.

* ModuleEchoLink: New command, "1", added. When giving this command,
  all connected stations callsigns will be read back.

* The Repeater logic is now nice and stable. However, there are some
  audio issues that need to be fixed. There is some noise after playing
  sound clips that is not nice to listen to. The cause for this may be
  Alsa OSS emulation problems. I'll switch to native Alsa to see if that
  might help. Also, some times (not very often) the repeated audio get
  chopped up.



 0.3.0 -- 26 Sep 2004
----------------------

* Added anti flutter to the DTMF detection code. The anti flutter code is
  activated by prefixing all DTMF commands with the "A" character. When the
  feature is activated, two or more of the same digit in a row are ignored.
  To input more than one of the same digit in a row, use the repetition
  character "B". To end the command, use the "C" character. The anti flutter
  code is only active for one command. That is, until "C" is received.
  Example: A112B3C = 1223, AC = empty command = #.

* Bugfix in the Parrot module: The module timeout timer kept running after
  the module had been manually deactivated. This caused svxlink to crash when
  the timeout occured.

* ModuleEchoLink: Added support for multiple echolink connections. Two new
  configuration variable was added to support this: MAX_CONNECTIONS and
  MAX_QSOS.

* ModuleEchoLink: Now sending an audio reject message if the connection
  was rejected.

* Added command line parsing and two command line switches. The first is the
  --daemon switch which make the SvxLink server run in the background.
  The second is --logfile which make it possible to redirect stdout and
  stderr to a file.

* ModuleEchoLink: Improved directory list handling.

* Bugfix: The TX would hang some times.

* Bugfix: Audio transmitted by modules had precendence over local messages
  which caused interrupted announcements.

* Bugfix: The TX timeout caused some problems.

* Added an option to execute DTMF commands at squelch close in addition to
  when # is pressed (XyzLogic/EXEC_CMD_ON_SQL_CLOSE). However, the DTMF
  decoder will probably have to be improved to not false trigger for this
  feature to be really useful.

* ModuleParrot: New configuration option REPEAT_DELAY that makes it possible
  to wait a while after the squelch closes before playing back the recorded
  message.



 0.2.0 -- 27 May 2004
----------------------

* A SvxLink server node can now act as a repeater system.

* Added periodic identification.

* Improved sound clips.

* Improved DTMF decoding algorithm.

* ModuleEchoLink: Now printing out incoming chat messages.

* ModuleEchoLink: Now only printing out incoming info messages if it
  differs from the last message received.

* CTCSS squelch implemented. Usage of this is recommended over using
  the vox squelch. Make sure that your receiver let the CTCSS frequencies
  through.

* Fixed the Parrot module so that the whole FIFO is played. Previously
  only 15 seconds was played.

* Now possible to set the length of the Parrot module FIFO in the config
  file. That is, it is now possible to set the maximum recording length.

* ModuleEchoLink: "Connecting to <callsign>" is now announced before
  actually connecting.



 0.1.1 -- 16 Apr 2004
----------------------

* Bugfix: Incoming connections wasn't properly taken care of in ModuleEchoLink.



 0.1.0 -- 04 Apr 2004
----------------------

* Initial revision

* New application: svxlink, a multi purpose voice services frontend.

* New module: A Help module for svxlink.

* New module: A Parrot module for svxlink that echos back everything you say.

* New module: An EchoLink module for svxlink to handle EchoLink connections.

