 0.10.1 -- 30 Jul 2008
----------------------

* Bugfix: Again the NO_REPEAT config variable did not work. It was
  simply ignored.

* Bugfix: The "transmit" function was never called in Logic.tcl.
  This probably caused the IDENT_ONLY_AFTER_TX feature not to work.

* Bugfix: The squelchOpen function was not called in a RepeaterLogic when
  the repeater opened if using OPEN_SQL_FLANK=OPEN.

* Added TCL functions for sending selcall sequences. Code contributed by
  Adi / DL1HRC. Have a look at SelCall.tcl for usage instructions.

* New TX type, Multi, added to support multiple transmitters for one logic.

* Now support TCL 8.5.



 0.10.0 -- 18 May 2008
----------------------

* Bugfix: If SHORT_IDENT_INTERVAL != 0 and LONG_IDENT_INTERVAL == 0 we
  got a division by zero error.

* Bugfix: The NO_REPEAT config variable did not work as expected. Audio
  was not only being cut off from being retransmitted. No modules got
  any audio either.

* Internal audio handling rewritten. The new audio pipe infrastructure
  is now used everywhere in SvxLink.

* Bugfix in ModuleEchoLink: The DESCRIPTION config variable wasn't
  used at all so no info message was sent upon connect.

* Now mixing sound effects with "traffic audio" (received repeater
  audio, audio from modules (e.g. EchoLink) or audio from logic
  links).

* Added support for the DTMF decoder on S54S / Aleks interface board.

* Lower audio latency.

* Audio is now transported between logic links and modules.

* RepeaterLogic: Identifications are now also sent when the
  repeater is up.

* The volume of sound effects and announcements are now lowered
  when there are other traffic that should be sent out
  (received repeater audio, module audio or audio from
  logic links). There are two new configuration variables
  to control this behaviour: FX_GAIN_NORMAL and FX_GAIN_LOW.

* New configuration variable for a simplex logic: MUTE_RX_ON_TX.

* Bugfix in ModuleEchoLink: When initiating an outgoing connection it was
  possible to deactivate the EchoLink module before the connection was
  established. This could especially happen if double detecting #.

* Bugfix in ModuleEchoLink: It was not possible to establish multiple
  outgoing connections in one command. In fact, entering multiple
  stations in one command would cause a memory leak.

* Implemented remote TX. The new application "remotetrx" now handle
  both remote transmitters and receivers. The old application "remoterx"
  has been removed.

* Implemented a simple TX uplink for the remotetrx application. This
  make it possible to have remote receivers that is linked up to the
  repeater site on an RF channel.

* Now possible to use left/right stereo channels as two mono channels.
  Which channel to use is chosen by the new configuration variable
  AUDIO_CHANNEL that must be set for RX and TX configuration sections.

* Changed the name of RX config variable VOX_START_DELAY to SQL_START_DELAY.
  It is now possible to use the squelch start delay for all squelch types.

* Added support for running the sound card in either of 8, 16 or 48 kHz
  sampling rate. Even though SvxLink internally still use 8kHz sampling
  rate, it improves the audio quality some what. Especially there is a
  difference when going from 8 to 16kHz since the filters can look
  quite bad at 8kHz. Some audio boards simply work best at 48kHz.
  New configuration variable GLOBAL/CARD_SAMPLE_RATE added to set this up.

* Added a signal level based squelch type. Set SQL_DET to SIGLEV to
  use the new squelch type. Configuration variables SIGLEV_OPEN_THRESH
  and SIGLEV_CLOSE_THRESH will control at which levels the squelch will
  open and close. To use this squelch type, the signal level detector
  must have been calibrated by setting up SIGLEV_SLOPE and SIGLEV_OFFSET.
  Also, since the detector is not perfect you probably need to set
  SQL_HANGTIME to a couple of hundred milliseconds. If using a voter,
  SQL_DELAY might have to be setup to get reliable signal level readings.
  A value of 40 seem to work fine.

* Implemented an "activate module on long command" feature. For example,
  this feature can be used to automatically activate the EchoLink module
  if the user types in a command longer than, lets say, four digits. This
  make it easier for users that are not used to the SvxLink command
  structure to establish an EchoLink connection.
  New config variable: ACTIVATE_MODULE_ON_LONG_CMD.

* Macros behave a little bit different now. The macro digits are now sent
  back into the logic core, digit by digit, as though they were received
  from the DTMF decoder. This mean that all macro commands have to be
  ended with a number sign to be executed.

* New voter configuration variable BUFFER_LENGTH to set how much audio,
  in milliseconds, should be buffered during the voting delay.
  Previously, the buffer length was adjusted to compensate for the
  voting delay. This is not necessary in cases where only a short
  voting delay is used (a couple of hundred milliseconds). It just adds
  latency to the audio which is especially noticable on a repeater.



 0.9.0 -- 02 Jan 2008
----------------------

* It is now possible to spcify NONE for the PTT_PORT config variable if
  no hardware PTT is required.

* Bugfix: It was not possible to turn ID off completely. It would always
  ID at 12 AM.

* Improved the DTMF decoder. Now using a third party DTMF decoder from the
  spandsp library. This mean that SvxLink now depend on this library to
  work so it must be installed.

* Lowered the amplitude of the repeater idle sound.

* Now possible to set parameters for outgoing DTMF digits, typically sent
  using the DTMF Repeater module. New config variables in the tx section:
  DTMF_TONE_LENGTH, DTMF_TONE_SPACING, DTMF_TONE_AMP.

* Bugfix: Now suppressing first roger beep when opening repeater on squelch up.

* Bugfix: Audio is now not sent to modules and other cores when the repeater
  is down.

* Bugfix in ModuleDtmfRepeater: One of the frequencies for DTMF tone sending
  was wrong (1366Hz instead of 1336Hz).

* Bugfix in ModuleEchoLink: The config variables DROP, REJECT and ACCEPT
  was not properly initialized so that when they were not set in the
  config file, SvxLink would behave unpredictably.

* SvxLink can now use GSM encoded sound clips.

* SvxLink now also run on bigendian systems.

* Fixed some warnings that appeared with gcc 4.2.

* Now linking against libtcl8.4 instead of libtcl. That seem to be
  more standard.

* Now compile under CentOS 5.0, Fedora 8, Ubuntu 7.10 and Gentoo.



 0.8.0 -- 15 Apr 2007
----------------------

* Bugfix in ModuleEchoLink: The outgoing greeting message would be
  mixed with incoming EchoLink traffic instead of muting the EchoLink
  traffic until the greeting message had been played.

* Bugfix in ModuleEchoLink: A crash could occur if the remote station sent
  some audio directly after a local diconnect.

* ModuleEchoLink: Better handling of QSO objects that are in the DISCONNECTED
  state.

* ModuleTclVoiceMail: Voice mails are now stored in
  /var/spool/svxlink/voice_mail.

* Added a logrotate config file: /etc/logrotate.d/svxlink. It rotates the
  logfile /var/log/svxlink.

* Added a startup script /etc/init.d/svxlink that can be used to start
  the SvxLink server at boot. It also have a configuration file:
  /etc/sysconfig/svxlink.

* Now possible to point out a configuration file on the command line using
  the --config command line option.

* Now also looking for the configuration file at $HOME/.svxlink/svxlink.conf

* New configuration variable GLOBAL/CFG_DIR. It should point out a directory
  (e.g. /etc/svxlink.d) where additional configuration files can be found.
  This will make it possible for each module to have its own configuration
  file. Good for modularity and it's easier to install third party modules.

* Bugfix: The stdin file descriptor was used after it had been closed.

* Catching SIGTERM and SIGINT. A message is written to stdout/logfile.

* Implemented CTCSS tone on transmit. New configuration variables are
  Tx1/CTCSS_FQ, Tx1/CTCSS_LEVEL, SimplexLogic/TX_CTCSS and
  RepeaterLogic/TX_CTCSS.

* Now possible to set a squelch delay which can be good in some odd
  situations. Configuration variable: Rx1/SQL_DELAY.

* Improved the CTCSS squelch detector. It is now possible to have a
  setup with open squelch. It is also more resistant to QRM.
  The configuration variable CTCSS_THRESH set the squelch threshold.
  The configuration variable CTCSS_FQ now understand fractions so we
  can write "136.5" instead of the approximation "136".

* Added a signal strength detector that can be used with the voter.

* Added a de-emphasis filter on received audio. This can be good if
  you connect to the receiver via a 9k6 packet radio connector.
  The audio must then be de-emphasized to not sound "thin".
  The filter can be turned on/off by the configuration variable
  DEEMPHASIS in the receiver configuration section.

* Added a pre-emphasis filter on transmitted audio. This can be good if
  you connect to the transmitter via a 9k6 packet radio connector.
  The audio must then be pre-emphasized to not sound "thick".
  The filter can be turned on/off by the configuration variable
  PREEMPHASIS in the transmitter configuration section.

* Added DTMF muting. Use the MUTE_DTMF configuration variable in an rx
  section to enable/disable this feature.

* Added squelch tail elimination. This is good if running with open squelch.
  Use the SQL_TAIL_ELIM configuration variable in an rx section to
  enable/disable this feature.

* DTMF tone duration is now available. It is not used at the moment but it
  would make it possible to implement LiTZ or other extra functions that
  depend on DTMF tone length.

* Added a pre-amplifier in the RX frontend. This can be used as a last resort
  if enough gain can't be achieved on the analogue side.

* ModuleEchoLink: New DTMF command "2" added that will play back the local
  node ID. This is useful if you are on a trip and find a SvxLink node that
  you want to know the ID of.

* New module DtmfRepeater. This module can be used as a DTMF pass-through
  feature on a repeater logic where DTMF muting has been enabled.

* Added a peak detector in the receiver so that it is easier to adjust
  the input volume. It is enabled by setting the PEAK_METER variable in
  the receiver configuration section. Start SvxLink and open the squelch on
  the receiver so that only noise is available on the input. Adjust the input
  volume until you see messages printed about distorsion. Then lower the
  volume until there are no more messages.

* Now using libsigc++ version 1.2 instead of the old and outdated 1.0.

* Manual pages added for svxlink, remoterx, all plugins and
  configuration files.

* SvxLink now announce the current time at manual identification.

* Implemented CW sending code in the TCL event scripts. Have a look at the
  documentation in CW.tcl.

* ModuleEchoLink: New configuration variables DROP, REJECT and ACCEPT added
  to make it possible to filter on callsign which stations are allowed
  to connect.

* RepeaterLogic: New configuration variable OPEN_SQL_FLANK which can be set
  to either OPEN or CLOSE to control if the repeater should activate on
  squelch open or squelch close for OPEN_ON_SQL and OPEN_ON_CTCSS.

* ModuleEchoLink: New feature "listen only" added. Using command 51 one can
  activate a mode where SvxLink will not transmit received audio to remote
  EchoLink stations. Neither locally received nor remotely received audio
  will be sent. Deactivate using 50.

* ModuleEchoLink: New feature "random connect" added. Use 31 to connect to
  a random link or repeater. Use 32 to connect to a random conference.

* ModuleEchoLink: New feature "reconnect to last disconnected". Use command
  4 to reconnect to the station that was the last one to disconnect.

* Now possible to process received DTMF digits and commands in the logic
  core TCL event scripts. New event functions: dtmf_digit_received and
  dtmf_cmd_received.

* Added files to set full access permissions on the serial and OSS audio
  devices: /etc/udev/rules.d/10-svxlink.rules and
  /etc/security/console.perms.d/90-svxlink.perms.



 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.

