 1.10.1 -- 26 Jul 2026
-----------------------

* Security: RemoteTrx NetUplink unvalidated audio length (OOB read).
  Credit: Mark Rose

* Security: Emit warning if AUTH_KEY is unset in RemoteTrx NetUplink.
  Suggested by: Mark Rose

* Security: LocationInfo: Avoid buffer overflow in APRS message construction
  Credit: Mark Rose

* Security: SvxReflector: Fix use-after-free from stale cached JSON on
  repeated MsgNodeInfo
  Credit: Mark Rose

* Security: SvxReflector: Reentrant delete client → use-after-free on
  this via sendError() write-failure path
  Credit: Mark Rose

* Bugfix in ModuleMetarInfo: bkn///cb was not output if the altitude was
  missing
  By Adi/DL1HRC

* Security: SvxReflector client: TCL command injection via server-supplied
  talker callsign
  Credit: Mark Rose

* Security: NetRx: unvalidated MsgAudio length → out-of-bounds read
  (network)
  Credit: Mark Rose

* Security: RemoteTrx NetUplink: server-initiated disconnect leaks the
  connection object → unbounded resource exhaustion (network DoS)
  Credit: Mark Rose

* Bugfix: Fix memory handling problem in RemoteTrx

* Security: RtlTcp: malformed rtl_tcp greeting triggers `exit(1)` → full
  daemon denial of service
  Credit: Mark Rose

* Security: FRN module: unvalidated server-supplied list item count →
  unbounded memory growth (DoS)
  Credit: Mark Rose
  Approved by: sh123



 1.10.0 -- 23 May 2026
-----------------------

* Improved announcements for reflector connection state. If the connection is
  down when a talkgroup is active, a buzzing sound will be prepended to the
  roger sound.

* Writing to the logfile in SvxLink applications are now done from a separate
  thread.  That will increase the accuracy of the timestamps in some
  situations.  Previously multiple log rows could be lumped together in a
  block where all rows had the same timestamp. That made it harder to debug
  some timing critical problems.

* Support for hidraw PTT and squelch for the CM119A audio chip added.

* New config variable MACRO_PREFIX used to set a custom or no prefix for DTMF
  macro commands.

* New TCL event "siglev_updated" that is called when the siglev value is
  updated on the receiver.

* New configuration variable for RepeaterLogic, SQL_TIMEOUT, to set a soft
  timeout on transmissions.

* Handle module idle commands in ModulePropagationMonitor.

* Bugfix in ModuleSelCallEnc: If an invalid selcall variant ID was specified
  the module crashed.

* Bugfix in ModuleTclVoiceMail: If no password was specified on login the
  module crashed.

* The SvxLink applications can now log to syslog by specifying
  --logfile=syslog: (including the colon character).

* New configuration variable ACTIVATE_ON_TG that can be used in a logic
  linking configuration section to activate the link when a talkgroup is
  activated in a logic core.

* An APRS status message containing application name and version will now be
  sent every 24 hours.

* Improved TG inhibit activation in ReflectorLogic. When there is activity
  (e.g. squelch open) in another logic core, and the talkgroup is indicated as
  0, remote TG activation as well as local activity activation (e.g. CTCSS to
  TG) is inhibited. Previously only remote activation was inhibited. By
  default there now also is an announcement (e.g. "local") when the inhibited
  state is entered and the usual selection timeout sound when the state is
  existed.

* Improved auto-QSY. The SvxReflector auto-QSY timer is now not started until
  a talker has been active on the talkgroup. The auto-QSY procedure is
  triggered at the first talker stop that occur after an auto-QSY timeout

* Reduced CPU load for the http /status endpoint in SvxReflector.

* SvxReflector security fix.

* CTCSS_TO_TG_DELAY default value changed from 1000 to 0.

* Bugfix in the receiver voter. Tone detections was not buffered, like other
  signalling, until a receiver was selected.

* Bugfixes in SwSel5Decoder. Thanks to Rui Barreiros for reporting.
  - Potential buffer overflow fixed
  - Last defined tone was never detected

* Add support for GPIOD v2.
  Thanks to Rui Barreiros for implementing this.

* Add support for sigc++3

* Add new config variable DTMF_IGNORE_WHEN_NOT_UP.

* Changes in the reflector server command PTY commands based on PR from
  Rui Barreiros:
  - Implemented CA LS and CA RM
  - Renamed CA PENDING to CA LSP and implemented it
  - Added CA LSC to list certificates only
  - Responses are now sent to the PTY when appropriate

* New reflector server talkgroup configuration, ALLOW_MONITOR, to set which
  callsigns are allowed to monitor a specific talkgroup.

* SvxReflector Bugfix: Certificates that had passed their renewal time, but
  was still valid, was never sent to a client.

* Improved HIDRAW code
  The HIDRAW squelch and PTT code have been made more resiliant so that it
  can handle a device that disappear and then comes back. Previously it
  would flood the log with error messages and never recover.



 1.9.1 -- 01 Jul 2025
----------------------

* Fix build errors for newer versions of gcc on some distros

* Add documentation for SvxLink node reflector connection in the svxlink
  manual page.

* The systemd units for svxlink and svxreflector now make a recursive owner
  change of the state directory (e.g. /var/lib/svxlink) to avoid owner
  problems if an application by mistake is started as another user (e.g.
  root).

* Bugfix: Add offset to cert renewal timer to avoid a race

* Bugfix: If there already is a renewed reflector certificate available for a
  node, don't renew it again.

* New LocationInfo config variable for APRS: FREQUENCY_SEPARATOR.



 1.9.0 -- 03 May 2025
----------------------

* Change reflector config at runtime.
  Contribution from DL1HRC/Adi, following an idea from DJ1JAY/Jens to change
  some SvxReflector parameters at runtime.

* The reflector connection is now authenticated using X.509 certificates. Both
  the server and the client requires authentication. The AUTH_KEY
  authentication method that were previously used is deprecated. The
  certificate generation process is mostly automated. The contents of the
  certificate can be customized using the configuration variables with name
  prefix CERT_. Default values are good in most cases. CERT_EMAIL may be good
  to specify so that the SvxLink node owner can be contacted. Ask the
  reflector sysop what the convention is.
  Both the TCP and UDP connections are encrypted. The default is to use
  the AES128 cipher in GCM mode.
  The reflector server need to be updated to use this version of SvxLink on a
  reflector client. If the server is older and only support the version 2
  protocol, you must use TYPE=ReflectorV2 in the ReflectorLogic config.
  All PKI (Public Key Infrastructure) files will be stored in the directory
  given by the CERT_PKI_DIR configuration variable. The path defaults to
  something like /var/lib/svxlink/pki but the exact default path depend on
  build configuration. In any case, that path need to be created and made
  writable for SvxLink. That should be done automatically by "make install".
  Building SvxLink also require a new dependency on OpenSSL so the development
  package for that library need to be installed (e.g. install package
  libssl-dev if on a Debian based distro).

* The SvxReflector now check the callsign for a connecting node against the
  ACCEPT_CALLSIGN and REJECT_CALLSIGN configuration variables. That is done
  for both AUTH_KEY connections and certificate connections.

* It's now possible to apply LADSPA plugin audio processing to the transmitted
  audio. Plugins are set up using the LADSPA_PLUGINS configuration variable.

* Added a more verbose way to configure LADSPA plugins where the available
  input controls are specified by name in their own configuration section.

* Add --version command line option to applications svxlink, remotetrx,
  devcal and svxreflector.

* Add connection throttling to SvxReflector. The throttling is per IP. A token
  bucket of size ten is used to throttle the connection rate. The bucket is
  filled with one connection per ten seconds up until the bucket size is
  reached.

* New reflector PTY command:
  NODE BLOCK <callsign> <blocktime seconds>
  The node will be blocked until it has been silent for the number of
  specified seconds.

* LocationInfo APRS code reworked
  - All packets changed destination to the SvxLink specific one, "APSVX1"
  - An APRS object is now emitted for the base callsign
  - SYMBOL for the base callsign object can be specified in the configuration
  - Compatibility: Telemetry now emitted with the base callsign as from-address
  - Compatibility: Telemetry now use EQNS message to scale values
  - Compatibility: Removed the SvxLink logic name from telemetry packets
  - The STATISTICS_LOGIC configuration variable must be used to specify the
    name of the logic core from where the APRS telemetry should be taken.
  - CALLSIGN can be specified without the EL/ER-prefix in which case no
    Echolink object will be emitted
  - SOURCE_CALLSIGN can be used to specify the source address
  - LOGIN_CALLSIGN can be used to specify the APRS-IS login callsign
  - PHG is now included in the object packets
  - PATH should now normally be left unset in which case default is TCPIP*
  - Extended frequency range implemented according to UNOFFICIAL APRS
    Protocol Reference 1.2 Chapter 18
  - If LocationInfo TONE is not set, Toff is sent
  - Added NARROW config variable to indicate if a node is using narrow FM
  - APRS packet parsing code added
  - Received directed message packets are now acked
  - FILTER can be specified in configuration
  - TX_OFFSET (repeater shift) can be specified in configuration
  - Limit the APRS comment to 36 characters as per protocol spec
  - The DEBUG configuration variable can be set to print APRS packets
  - TONE should now be specified including the decimal

* Add commandline option --reset to svxlink and remotetrx. It was added to get
  an easy way to reset all SvxLink hardware to initial state. The default
  systemd unit will run the application with that option set after the main
  application has exited.

* Add command line option --quiet to svxlink and remotetrx. Suppress output of
  info messages. Warning and error messages will still be output.

* Bugfix in RemoteTrx: If the AUTH_KEY contained whitespace it ended up to be
  completely empty, thus no authentication was enabled.



 1.8.0 -- 25 Feb 2024
----------------------

* MetarInformation, more flexible airport announcement at the beginning of a
  Metar

* SvxReflector now support switching traffic on talk groups.

* ReflectorLogic can now request switching talk groups based on the received
  CTCSS tone frequency. It is also possible to switch to any talk group using
  DTMF.

* Now possible to use multiple CTCSS squelch tones in parallell.

* SvxReflector now have a QSY functionality used to switch all active nodes on
  a talk group to another talk group.

* A logic link is now disconnected using <prefix># instead of <prefix>0#. If
  any digits are specified after the prefix the link will be activated and the
  digits will be given to the remote logic(s) for processing. Right now only
  the ReflectorLogic care about these extra digits, also called the
  subcommand.

* A logic core connected to a logic link can now play announcements on all
  other connected logics. This is used in the ReflectorLogic to announce talk
  group selections and command feedback.

* New signal level "detector": CONST

* ModuleEchoLink bugfix: The LINK_IDLE_TIMEOUT did not work if the
  remote_timeout TCL function was changed to not play any sound.

* ModuleEchoLink bugfix: The LINK_IDLE_TIMEOUT did not work with short timeout
  values where the timeout was shorter than the length of a locally received
  transmission.

* ModuleMetarInfo bugfix: Announcing twice

* ModuleMetarInfo bugfix: SvxLink crashed on long LocationInfo comments

* ModuleEchoLink: Now possible to silently ignore all incoming connections
  using the DROP_ALL_INCOMING configuration variable.

* The receiver configuration variables SQL_HANGTIME, SQL_EXTENDED_HANGTIME and
  SQL_EXTENDED_HANGTIME_THRESH are now settable from within a C++ module for
  example.

* Improved GPIO up/down scripts with more error handling and support for
  handling more cases.

* New SvxReflector feature: Auto QSY. It is now possible to set a per
  talkgroup time in the reflector after which a QSY to a random talkgroup is
  performed. This can typically be used on call channels so that stations do
  not dwell there for too long.

* New squelch type: COMBINE. There now is a new squelch type that can combine
  multiple other squelch types using a logical expression.
  Implementing this new feature required rewriting quite a lot of the squelch
  infrastructure code. Watch out for changed behavior in the squelch
  functionality.

* Bugfix: Squelch types DDR, SIM and TONE reported the "raw" signal strength
  instead of the integrated one. This fix can change the behavior of the voter
  and the extended hangtime feature.

* Added debug mode for the CTCSS detector. Enable by setting CTCSS_DEBUG to 1
  in a receiver configuration section.

* ReflectorLogic: Now possible to adjust the UDP heartbeat interval using the
  UDP_HEARTBEAT_INTERVAL configuration variable.

* Now possible to set configuration variables from TCL using the
  setConfigValue function. This can be used to change certain configuration of
  SvxLink while it is running. Only some configuration variables support being
  changed at runtime.

* If a configuration variable is changed in the logic core, or in the main
  configuration section for a module, the new TCL function config_updated will
  be called.

* New configuration variable ONLINE that can be used to decide if a logic core
  should be active or not on program startup. This variable also support being
  set at runtime.

* Use the new configuration variable COMMAND_PTY to set up a PTY that can be
  used to send commands to a logic core.

* Filter out CTCSS band for voice output. Interference on CTCSS transmission
  could be caused by low frequency content in audio clips or incoming audio on
  Echolink for example.

* Ignore prioritized talkgroups qfter QSY if there have been local node
  activity prior to the QSY. This fix a problem where a node would switch to a
  prioritized talkgroup after a QSY to a lower priority talkgroup, if there
  have been no local activity after the QSY. Priority will be honored again
  after the node have switched to TG#0.

* Make the audio limiter threshold in the receiver configurable using the
  LIMITER_THRESH configuration variable in a receiver configuration section.

* Add an audio limiter to the transmitted audio path. The threshold may be set
  using the LIMITER_THRESH configuration variable in a TX configuration
  section.

* Bugfix: When AUTOACTIVATE_ON_SQL is used in a logic link definition it is
  supposed to default to a timeout of 30 seconds if TIMEOUT is not set. That
  did not work though.

* ReflectorLogic: Use the QSY_PENDING_TIMEOUT configuration variable to enable
  following a just ignored QSY request on squelch open.

* By default, when activating a module in a logic core, all logic linking
  audio will be muted. This behavior can be changed by using the
  MUTE_LOGIC_LINKING configuration variable in the module configuration.

* More informative squelch open/close printouts implemented. The information
  that is printed within the parenthesis after the squelch open/close message
  is now specific for each squelch type so that meaningful information can be
  printed for that squelch type. For example the CTCSS tone frequency and SNR
  is printed for CTCSS squelch. The value printed for SIGLEV squelch is now
  the actual value that is used by the squelch. Previously there was no
  connection between the value used by the squelch and the printed signal
  level.

* Fix receiver muting bug introduced with the AUDIO_DEV_KEEP_OPEN feature.

* Bugfix: SQL_START_DELAY was not honored in all cases.

* Rework squelch core code. The core squelch handling code was not fully
  correct causing problems in some configurations.

* New voter configuration variable VERBOSE which cause the voter to print the
  squelch state events of the satellite receivers. This can be used while fine
  tuning voter timing for example.

* Rename configuration variables to make it more clear that they are for
  squelch configuration. An "SQL_" prefix have been added to the following
  configuration variables: SIGLEV_RX_NAME, SIGLEV_OPEN_THRESH,
  SIGLEV_CLOSE_THRESH.

* Bugfix: Do not emit tone detected events from muted receivers.

* The voter COMMAND_PTY now accept a new command MUTE that will keep the
  receiver active but block all content.

* Bugfix in ModuleMetarInfo: Gusts were not announced correctly in combination
  with mps

* Bugfix in ReflectorLogic: The AUTOACTIVATE_ON_SQL logic linking
  functionality did not work for the ReflectorLogic.

* The AUTOACTIVATE_ON_SQL logic linking configuration variable has been
  renamed to ACTIVATE_ON_ACTIVITY.

* Bugfix in reflector authentication.

* Now possible to set the Echolink module drop/reject/accept configuration
  variables at runtime. This can for example be used from TCL, using the
  setConfigValue function, to change behavior at runtime. See example in
  ReflectorLogic.tcl.

* Bugfix in ReflectorLogic: It was possible to activate a temporary TG monitor
  on a TG that was configured to be permanent. When the temporary monitor
  timed out the TG was removed from the monitoring list completely.

* Add support for PTT and squelch via the gpiod library. Accessing GPIO pins
  via the sysfs interface is deprecated.
  When PTT_TYPE is set to GPIOD there are two new configuration variables
  available to set GPIOD up, PTT_GPIOD_CHIP and PTT_GPIOD_LINE.
  When SQL_DET is set to GPIOD there are two new configuration variables
  available to set GPIOD up, SQL_GPIOD_CHIP, SQL_GPIOD_LINE. If SvxLink is
  built with libgpiod >= 1.5 SQL_GPIOD_BIAS will also be available to set
  PULLUP/PULLDOWN for a GPIO input (squelch) pin.

* New CTCSS tone detector, mode 4, added. This detector is faster and more
  selective. It probably also is more resilient to interference. Have a look
  at the svxlink.conf (5) manual page under CTCSS_MODE for more information.

* Tone detectors for 1750 Hz tone burst, CTCSS repeater activation,
  CTCSS_TO_TG etc now use frequency estimation in addition to energy detection
  for better selectivity.

* Improved squelch state logging with more details about the detection.

* New CTCSS configuration variable CTCSS_SNR_OFFSETS (note the plural S) which
  replace the old variable with a similar name. The new variable take a comma
  separated list of frequency:offset pairs to support the use of multiple
  CTCSS tone frequencies. The siglevdetcal utility has also been modified to
  output the new variable format. If you are using just one CTCSS frequency
  with a previously calibrated offet value you can keep using that. The older
  configuration variable will not be removed and it still work in the same
  way.

* ReflectorLogic: New config variable VERBOSE that choose if printouts from
  the reflector logic should be verbose or not. At the moment the only
  difference is that reflector join/leave messages will be suppressed if
  VERBOSE=0.

* The TCL event handler functions remote_cmd_received and
  remote_received_tg_updated can now be used in a logic core to act on
  commands and talkgroup activations from another logic core.

* ReflectorLogic: Client side redundancy added by using DNS SRV records or a
  locally specified list of hosts. Renamed configuration variables:
  HOST -> HOSTS, PORT -> HOST_PORT. New configuration variables:
  DNS_DOMAIN, HOST_PRIO, HOST_PRIO_INC, HOST_WEIGHT.

* Logic cores (SimplexLogic, RepeaterLogic etc) are now implemented as plugins
  which mean they are dynamically loaded at runtime if needed. There are
  multiple benefits with that:
  - Easier to accept contributed logic cores into the main source tree since
    no core code needs changing.
  - As long as the plugin is not loaded it can cause no harm if it contain a
    bug.
  - Third-party logic cores can be packaged separately. Package maintainers
    that build contributed code are urged to put such artifacts in its own
    package with a name like svxlink-contrib-examplelogic.
  See man svxlink.conf and the LOGIC_CORE_PATH configuration variable for info
  on how SvxLink find the plugins.

* Bugfix in SvxReflector: After 65536 client connections the warning "Incoming
  UDP datagram from XX.XX.XX.XX:YYYYY has invalid client id ZZZZZ" was logged
  for all new client connections.

* New contribution from DL1HRC: SipLogic. The build is enabled by using the
  -DWITH_CONTRIB_SIP_LOGIC=ON CMake command line option.

* The CTCSS squelch detector is now used for both OPEN_ON_CTCSS and
  CTCSS_TO_TG. That have multiple benefits. CPU usage is lower since only one
  detector is used instead of three in parallell. The quality of the CTCSS
  detector is better so shorter detection times may be used. On the downside,
  there must be a CTCSS detector configured at every frequency that is
  specified in either CTCSS_TO_TG or OPEN_ON_CTCSS.

* Changed syntax for OPEN_ON_CTCSS. Only detection time is specified, no
  frequency. All frequencies configured in the receiver configuration will be
  used.

* New configuration variable CTCSS_TO_TG_DELAY.

* CTCSS_MODE=4 now is the default.

* Bugfix: CTCSS transmission did not work correctly when AUDIO_DEV_KEEP_OPEN=1
  was specified. The tone did not turn off once it had been turned on.

* The TX configuration variable CTCSS_LEVEL is now set in dBFS instead of
  percent.

* New configuration variable CTCSS_EMIT_TONE_DETECTED. May need to be set to 0
  in some advanced squelch configurations.

* Now possible to set the jitter buffer delay on TX audio in RemoteTrx. This
  may be useful if experiencing choppy TX audio.

* Bugfix: Receiver voter muting had a couple of bugs that showed up when using
  the voter command PTY to disable/mute/enable receivers. It's unknown if
  these bugs have also caused any other problems.

* 1750 Hz tone burst detector accuracy requirement increased to +/- 25 Hz.

* Bugfix: When using "open repeater on squelch close", the squelch rx id was
  not set up before the TCL event handler send_rgr_sound was called directly
  after repeater open. This caused playing the wrong roger sound.

* Bugfix in ModuleEchoLink: The INCORRECT PASSWORD message was ignored.

* New global TCL function "getVar" that makes it easier to get the value of a
  variable that may be non-existent. If the variable does not exist a default
  value is returned instead.

* New configuration variable LOCAL_RGR_SOUND in ModuleEchoLink that is used to
  enable/disable the playing of a roger beep locally when the remote station
  stops talking.

* Add support for using the CM108B chip for squelch and PTT.
  Contributed by DL1HRC.

* New configuration variable TG_SELECT_INHIBIT_TIMEOUT that is used to
  separately control the TG select inhibit feature.

* Bugfix for the 1750_MUTING configuration variable. Setting it to 0 did not
  disable the feature. It had to be commented out.

* It's now possible to use LADSPA plugins to shape received audio. Fore more
  information have a look at the documentation for the LADSPA_PLUGINS
  configuration variable.



 1.7.0-1 -- 10 Mar 2021
------------------------

* Bugfix in SvxReflector authentication code. Upgrade immediately.



 1.7.0 -- 01 Sep 2019
----------------------

* MetarInfo now supports secure http (https) since aviationweather.gov has 
  switched to https only. Read documentation and/or README in directory 
  modules/metarinfo for changes.

* Now possible to set the roger sound to be always on in the SimplexLogic, even
  when no module is active. Use the RGR_SOUND_ALWAYS configuration variable to
  enable the feature.

* New feature added called "AFSK-com". This feature make it possible to
  transport smaller amouts of metadata on an RF link, for example when linking
  remote receivers in via RF. The metadata can be signal level measurements,
  DTMF digits or tone detections (e.g. 1750Hz or CTCSS for repeater
  activation).
  There are two modes for AFSK-com, in-band and out-of-band. The in-band mode
  is used to transport data when there is no audio being transported. The
  out-of-band mode is used when data must be transmitted at the same time as
  analogue audio, like continuous signal level updates.
  To configure the AFSK handling use the OB_AFSK_* (for out-of-band) and
  IB_AFSK_* (for in-band) configuration variables. Also there is a new
  SIGLEV_DET=AFSK and DTMF_DEC_TYPE=AFSK to support transporting those values
  using the AFSK-com feature.

* Now possible to specify 1750Hz and CTCSS detectors in a RemoteTrx RfUplink.
  That is done using the new DETECT_1750 and DETECT_CTCSS configuration
  variables.

* An RX identity can now be specified for each receiver in a system. That
  identity can then be used in the TCL event handling scripts to for example
  send different roger sounds depending on which receiver the signal
  originated from. The identity is specified using the RX_ID configuration
  variable and consists of one char.

* New receiver voter feature: Now possible to adjust the voting delay per
  receiver. This may be good to do if some receivers are much slower to report
  squelch open/signal level. As an example, let's say we have three receivers
  where two of the receivers take at most 100ms to report signal level and one
  receiver requires 300ms. We then need to set the VOTING_DELAY to something
  like 350ms so as to be sure that all receivers get a chance to report their
  signal level measurement. If only the slow receiver opens there will be a
  total delay of 300+350=650ms. This is unnecessarily long since the other two
  receivers should have reported their signal strength way earlier. It's thus
  safe to shorten the voting delay for the slow receiver, so we do this:
  RECEIVERS=FastRx1,FastRx2,SlowRx:200. The total squelch open delay will now
  be 100+350=450ms for the fast receivers and 300+350-200=450ms for the slow
  receiver. That is, all receivers are now equally fast.

* New configuration variable CTRL_PTY that can be used in RX and TX
  configuration setions. It will set a PTY than can be used to control the
  frequency and modulation of external receivers and transmitters. An external
  transceiver control script is needed to actually control a transceiver. An
  example of such a script, trx_pty_ctrl.py, can be found in the SvxLink
  distribution. That script may be modified to support a specific transceiver.

* Now possible to specify the same PTY for multiple receiver and transmitter
  functions like squelch, ptt, DTMF, frequency control etc. That make it
  possible to handle all commands on the one PTY in one script. It is still
  possible to use separate PTY:s as before if that is desirable.

* New module ModuleTrx, a module to control one or more separate transceivers
  connected to a SvxLink node. The frequency of the transceiver is set through
  DTMF commands and then it's possible to transmit and receive on the
  transceiver through the SvxLink node. Have a look at the manual page for all
  details.

* The sound clip hz.wav have been moved from the Core directory to the Default
  directory and renamed to Hz.wav. Language packs need to be updated.

* There is a new function in locale.tcl called playFrequency that shoud read
  back a frequency as intelligently as possible. Language packs need to be
  updated if they use their own locale.tcl.

* New Default sound clips: kHz, MHz, GHz, ok. Language packs need to be
  updated.

* The default group for SvxLink changed from 'daemon' to 'svxlink'.

* ModuleEchoLink: New configuration variable REMOTE_RGR_SOUND that is used to
  enable the sending of a roger sound to remote Echolink stations when the
  squelch is closed on the local node. Default is to not send a roger sound.

* Rename TCL function addTimerTickSubscriber to addMinuteTickSubscriber.

* Add new TCL function addSecondTickSubscriber.

* Now possible to not specify an ID for a module. It will then not be possible
  to activate the module. This is typically useful for modules that have no
  command interface but rather is just doing something in the background.

* When reading TCL files, print a warning instead of erroring out if a file is
  not readable.

* The TCL function CW::setAmplitude now take the amplitude value in dB of
  full scale amplitude rather than thusands of full amplitude.
  Also it's now possible to give the CW::play function temporary values for CW
  speed, frequency and amplitude.

* The MultiTx now "mute" the logging printouts from its transmitters so that
  only one "Turning the transmitter ON/OFF" is displayed instead of one for
  each transmitter.

* New configuration variable for logic cores, PHONETIC_SPELLING, which if set
  to 0 will spell words using plain letters instead of the default phonetic
  spelling. Not all language packs support this feature.

* Now possible to set audio codec parameters for ReflectorLogic.

* Bugfix: Reset squelch RX id after sending roger sound so that the following
  roger sounds that may be triggered by non-rx events will send the "neutral"
  roger sound.

* Bugfix: The squelch detection logic for HIDRAW squelch was wrong so it did
  not work for active low devices.

* Bugfix: The EchoLink module could crash when encountering TCL errors.

* ModuleMetarInfo: Windshear now with runway, error handling for metar txt
  file, fix some typo

* Adding new Config options related to enabling IDs.
  Adding several config options to allow user to configure VOICE/CW/Custom
  announcements during the short and long ID processes.  This allows the
  settings to be on a channel by channel basis rather than having a single
  file for all channels.
  New logic configuration variables: SHORT_VOICE_ID_ENABLE,
  SHORT_CW_ID_ENABLE, SHORT_ANNOUNCE_ENABLE, SHORT_ANNOUNCE_FILE,
  LONG_VOICE_ID_ENABLE, LONG_CW_ID_ENABLE, LONG_ANNOUNCE_ENABLE,
  LONG_ANNOUNCE_FILE. See manual page svxling.conf (5) for more info.

* Now possible to configure SvxLink to keep audio devices open from
  application start to exit. The normal behavior in SvxLink is to open and
  close audio devices as needed. In a local RX and/or TX section set the
  variable AUDIO_DEV_KEEP_OPEN=1.

* Add stop timeout for systemd units after which svxlink will be killed if not
  exiting within 10 seconds.

* Now possible to specify which mail server to use in the voice mail module.

* ModuleDtmfRepeater: Logic and timings were a bit strange and buggy so the
  implementation was changed a bit.



 1.6.1 -- 01 Mar 2018
----------------------

* ModuleEchoLink bugfix: Echolink remote roger beep was sent even though
  listen only mode was active on the local node.

* Bugfix in the --logfile command line argument handling for svxlink,
  remotetrx and svxreflector. Under some circumstances SvxLink would crash
  with strange errors if used with a logfile.



 1.6.0 -- 30 Dec 2017
----------------------

* ModuleMetarInfo: smaller changes e.g. additional tcl function for raw
  output

* ModuleMetarInfo: Because of termination the metar service on noaa.gov some
  changes were needed in the module (weather.noaa.gov - >
  aviationweather.gov), better debug output if a metar can not be announced

* New argument "call" to EchoLink::is_receiving TCL event handler.
  Patch by hsmade.

* New TCL event handler EchoLink::client_list_changed.
  Patch by hsmade.

* New TCL function playDtmf. Patch by DL1HRC / Adi.

* ModuleEchoLink: Add command PTY that can be used to send commands to the
  EchoLink module at runtime. Patch by hsmade.

* RemoteTrx now display squelch open/close even when disconnected from
  the main system.

* Small bugfix in the LocationInfo functionality that made SvxLink exit
  uncleanly, possibly with a segmentation fault.

* New TCL command, injectDtmf, to inject DTMF digits into the command
  stream just as if they were received on the receiver. This function
  can for example be used in conjuction with the dtmf_digit_received and
  dtmf_cmd_received functions to remap commands to something different or
  inventing compound commands.

* ModuleTclVoiceMail: SvxLink would not start if the HOME environment
  variable was not set. That prevented proper operation from system
  startcripts.

* ModuleFrn: Now possible to specify a backup server that is used when the
  connection to the primary server fail. Use the new configuration variables
  SERVER_BACKUP and PORT_BACKUP to configure the backup server.
  Patch by sh123.

* New command PTY for controlling the receiver voter. It's possible to
  enable and disable receivers using the ENABLE and DISABLE commands.
  Use the COMMAND_PTY config variable in the voter configuration section
  to set it up.

* New command PTY for injecting DTMF digits into a logic core. Use
  configuration variable DTMF_CTRL_PTY to set the path to the PTY.
  The PTY will also emit the DTMF digits received on the RF.

* New configuration variable GPIO_PATH for PTT and squelch configurations that
  use GPIO. On some hardware platforms the path to control GPIO pins is not
  standard. This configuration variable can be used to set the path.

* Bugfix: Setting FQ_CORR=0 in a WbRx configuration section resulted in an
  error message

* FQ_CORR can now be negative

* New TCL event handing function EchoLink::info_received that is called when
  an info message is received from a remote EchoLink station.

* ModuleEchoLink: The connected TCL event handling function now also is given
  the callsign.

* Bugfix: The squelch detector was not able to handle larger audio blocks than
  256 bytes. It now can.

* Bugfix: Could not handle WAV files that contained other subchunks than 'fmt'
  or 'data'. Reading would fail for WAV files containing for example 'LIST'
  or 'id3' subchunks.

* New application SvxReflector that is used to link multiple SvxLink nodes
  together. On the SvxLink node side the new ReflectorLogic logic core is used
  to connect to the SvxReflector server.



 1.5.0 -- 22 Nov 2015
----------------------

* Added support for using digital drop receivers on an RTL2832U based DVB-T
  USB dongle. This will open up the world of cheap receiver hardware to all
  SvxLink users. It will for example be very cheap to set up an extra receiver
  with local coverage for a SvxLink based repeater, as long as there is a
  network connection to the repeater. The modulation forms supported are:
  FM, FM narrow, AM, AM narrow, USB, LSB, CW, CW wide and wideband FM
  (broadcast).

* New configuration variable for local receivers, RAW_AUDIO_UDP_DEST, which
  makes it possible to stream the raw audio read by SvxLink from the audio
  device to a UDP port. This feature was mainly added for debugging but may
  be usable for other things as well.

* New configuration variable MASTER_GAIN for local transmitters. This has the
  functionality as the PREAMP variable have for local receivers. That is,
  it can be used to fine tune or amplify the gain of the signal if it's not
  possible to do with the normal hardware sound controls.

* Added a calibration utility, devcal, which can be used to get all the
  levels right for all transmitters and receivers in the system.

* New squelch detector type, OPEN, which keeps the squelch open at all times.
  Used at calibration for example.

* Bugfix: The receiver voter had a bug which caused incoming audio to be
  muted if a receiver switch occurred in the middle of an identification.

* Support added for raw HID (Human Interface Devices) based devices that can
  be used for PTT and Squelch. An example of such a chip is the CM108 which
  can be found in some USB audio devices.
  Contributed by Adi / DL1HRC.

* Bugfix in ModuleMetarInfo: Numbers was some times read in the wrong way

* New logic core configuration, STATE_PTY, which specify a UNIX 98 PTY to open
  where SvxLink state information can be published. This information can be
  used by external applications to act on.

* The receiver voter now continuously output squelch state information to the
  logic core state PTY.

* Fixed issues reported by the Coverity scan static analysis tool.

* New config variable CARD_CHANNELS which is used to set the number of
  channels that is used on the sound card, e.g. 1=mono, 2=stereo.

* The DTMF_TONE_AMP transmitter configuration variable has been renamed to
  DTMF_DIGIT_PWR. To get the same level as with the old variable, add 3dB
  to the value set on the new configuration variable.

* Rewritten and greatly improved software DTMF decoder. The new decoder is
  the default choice when DTMF_DEC_TYPE is set to INTERNAL. To keep using the
  old DTMF decoder, set it to DH1DM instead. The improvements in the new DTMF
  decoder are:
  - Quicker: Now detect durations as short as 40ms
  - Much better immunity to non-DTMF audio, like speech, which mean less
    false detections
  - Slightly more sensitive
  - Lowered CPU requirements

* Now printing out when 1750Hz tone burst muting is active.

* Bugfix in the QSO recorder: If a write error occurred, the audio pipe could
  get stuck leading to audio to stop flowing in other parts of SvxLink.

* Config file open code cleanup for SvxLink and RemoteTrx. Under some
  circumstances "fopen: ..." error messsages were printed even though there
  really wasn't an error. Also, when using the --runasuser switch, the
  configuration file was still searched for using the HOME environment variable
  of the user who started the process rather than using the home directory
  of the target user.

* Add simulator for local receivers and signal level detectors. These
  simulators can be used to debug problems in SvxLink.

* Bugfix: A Local Rx would let squelch open/close through even when muted.

* The install path for libraries are now automatically discovered which may
  make libraries install in a another directory than before. For example, on
  normal 64 bit x86_64 systems they will end up in /usr/lib64 and the plugins
  will be placed in /usr/lib64/svxlink. On other platforms the paths may be a
  bit stranger, like /usr/lib/arm-linux-gnueabihf on the Cubieboard.
  This may require that the MODULE_PATH config variable is changed for the
  plugins to be found. The best is to comment out the MODULE_PATH
  configuration variable and let SvxLink determine what to use.
  The old LIB_SUFFIX CMake variable is not used anymore.

* New configuration variable in svxlink.conf for remote transmitters and
  receivers, LOG_DISCONNECTS_ONCE, that can be set to 1 to not log reconnect
  attempts.  This may be of use if a RemoteTrx is missing for a long time or if
  it's only used from time to time.

* The CFG_DIR configuration variable read additional config from files in
  the configured directory. The man-page stated that files starting with a dot
  were ignored. This was not true but is now. The man-page was also lacking
  information on that all files not ending in ".conf" are ignored.

* The default PTT type is now NONE so that svxlink and remotetrx can start
  out of the box without reconfiguring them.

* Bugfix in the GPIO squelch detector. The usage of "!" in GPIO_SQL_PIN to get
  inverted operation did not work.



 1.4.3 -- 02 nov 2015
----------------------

* SvxLink now compile in C++11 mode with GCC and other compilers that
  understand the -std=c++11 compiler switch. The compiler switch will
  automatically be turned on if a version of libsigc++ greater than 2.5.0 is
  detected since those versions require C++11 to be enabled.



 1.4.2 -- 06 jun 2015
----------------------

* Bugfix: The logic linking would cause a crash under some circumstances.
  For example SvxLink would crash on startup if link TIMEOUT was set and the
  startup Tcl function was modified to play an audio clip.



 1.4.1 -- 30 apr 2015
----------------------

* ModuleEchoLink: If an incoming connect have a different IP address than
  the one registered in the Echolink directory server, the station list is now
  refreshed immediately instead of just rejecting the connection and wait for
  the next periodic refresh.



 1.4.0 -- 02 aug 2014
----------------------

* The PTT hardware type must now be specified using the PTT_TYPE configuration
  variable in a TX section. Specify "SerialPin" for using a pin in the serial
  port, "GPIO" to use a pin in a GPIO port. Set PTT_TYPE to "Dummy" or "NONE"
  to not use any PTT hardware at all. It is an error to not specify PTT_TYPE.

* New config variable for repeater logics: CLOSE_ON_SEL5 which make it
  possible to close the repeater using a selective calling sequence.
  Patch contributed by Adi / DL1HRC.

* Now possible to have active low functionality on the PTT pin for GPIO. This
  is configured in the same way as for serial ports, by prefixing the gpio
  pin specification with an exclamation mark (!) in the PTT_PIN config.
  Example: PTT_PIN=!gpio5

* ModuleEchoLink: It's now possible to disconnect one specific station by
  choosing from a list of callsigns. The disconnect by callsign feature
  is activated using subcommand 7 while the EchoLink module is active.
  This feature was contributed by Martin/DF1AMB.

* ModuleEchoLink: New TCL event handling function: "chat_received" which
  is called when a remote chat message is received.

* ModuleEchoLink: New TCL event handling function: "squelch_open" which is
  called when the local receiver squelch open and closes. This function can be
  used to for example send a roger beep to the remote station when the squelch
  closes.
  Patch contributed by DL1HRC / Adi.

* Previously the upper threshold for the signal level reported from the noise
  signal level detector was hardcoded to 120. It can now be set using the
  configuration variable SIGLEV_BOGUS_THRESH. By default it's disabled.

* Now possible to make log entries have milliseconds in the timestamp. Use the
  code "%f" in the TIMESTAMP_FORMAT configuration variable to make that happen.

* New configuration variable for SimplexLogic, MUTE_TX_ON_RX, which can be set
  to allow transmission during reception. This may be desired if the logic is
  connected to some full duplex device.

* Now possible to prefix the GPIO_SQL_PIN config variable value with an
  exclamation mark (!) to get inverted operation for the GPIO squelch.

* Changed syntax for SERIAL_PIN in an RX section to match other config
  variables better. Now just the pin name need to be specified. If inverted
  operation is desired, the pin name may be prefixed with an exclamation mark
  (!). The old syntax, SERIAL_PIN=PINNAME:LEVEL, is still supported but a
  warning is printed if that form is used.

* ModuleEchoLink: New config variable REJECT_CONF which when set will reject
  connections from stations that are in conference mode.

* ModuleEchoLink: New config variable BIND_ADDR which can be set to bind the
  EchoLink UDP sockets to a specific IP-address/interface. This may be
  needed if the computer is fitted with more than one ethernet interface and
  EchoLink should only be used on one of them.

* Previously, when setting CTCSS_LEVEL in a LocalTx section, the voice level
  was adjusted down by the same amount that the CTCSS level was adjusted up.
  This is just confusing so I removed that compensation.

* Bugfix in the Voter: If the squelch were open while quitting, a crash could
  occur.

* Bugfix in logfile handling: SvxLink/RemoteTrx would crash if the filesystem
  was full while trying to write to the logfile.

* Flushing logs at exit.
  There have always been a problem with the log handling in SvxLink that if an
  error occurred during startup, the error printouts would not end up in the
  log. In fact, nothing would end up in the log, leaving the user confused.
  Now the log is flushed before exit so that all printouts end up in the log.



 1.3.1 -- 30 jun 2014
----------------------

* Bugfix: The voter may have had a race condition which caused an assertion
  failure. The code is a little bit more forgiving now.

* Bugfix: The voter could cause an assertion failure if a signal level lower
  than -100 were reported from one of the receivers.

* Bugfix in ModuleTcl example file.



 1.3.0 -- 01 Dec 2013
----------------------

* Improved support for linking logics together. It's now possible to have
  multiple links active at the same time for a logic. A link can be set to
  be default active. This mean that the link will be activated as soon as the
  application starts and also that the link can be automatically reactivated,
  after a timeout, if manually deactivated.

* Improved the logic shutdown feature. Upon shutdown, any active module is
  deactivated immediately and module activation is not allowed until
  the logic is activated again. This for example means that if the logic is
  shut down and an EchoLink connection comes in, that connection will be
  rejected. Also, no other DTMF commands than the logic activation command
  is allowed when the logic is shut down.
  The command was also renamed to ONLINE_CMD since everything became more
  logical. Calling it SHUTDOWN_CMD was a bit confusing. Should subcommand 1
  mean that the logic is shut down or brought back online?  Naming the command
  ONLINE_CMD make everything clear: 1=online, 0=offline.

* Improved QSO recorder. There now is only one configuration variable,
  QSO_RECORDER, in a logic configuration section. This configuration variable
  is used to set the DTMF command and to point out a configuration section
  where the rest of the QSO recorder configuration is specified.
  The QSO recorder can now close a recording after a configurable recording
  time and start a new one. The maximum time is specified using the MAX_TIME
  config variable. The SOFT_TIME config variable is used to specify an
  interval where the file will be closed on the first detected squelch close.
  This will give more natural cuts between recordings.
  It is now also possible to specify a maximum total size for all files in the
  recording directory. This is done using the MAX_DIRSIZE config variable.
  When the limit have been reached, the oldest file(s) will be deleted.
  The DEFAULT_ACTIVE config variable is used to set the default activation
  state of the QSO recorder. If set to 1, the recorder will be activated upon
  SvxLink startup. If the TIMEOUT variable is set, the activation state will
  return to the one set in DEFAULT_ACTIVE if manually activated/deactivated.
  If less than MIN_TIME milliseconds of audio has been recorded when a file is
  closed, the file will be deleted.
  If the node is idle for more than QSO_TIMEOUT seconds, the file will be
  closed.
  The ENCODER_CMD variable makes it possible to run an external audio
  encoder to compress the recordings.

* Added support for Squelch on GPIO. Use SQL_DET=GPIO and GPIO_SQL_PIN=gpio3
  in your config for GPIO support.
  Patch contributed by DG9OAA / Jonny.

* GPIO pins are now specified with the full name (e.g. gpio3) instead of with
  just the pin number. This enables the use of any pin naming scheme.

* Improved pre- and de-emphasis filters. They were not good at all in the
  previous relese. Now the filters should behave as expected. Also, the
  filters have been designed to be each others complement so that they will
  exactly cancel each other out.

* Now possible to specify DTMF_DEC_TYPE=NONE (or just comment it out) if no
  DTMF decoder is required for a certain receiver. Also made it possible to
  specify NONE for SEL5_DEC_TYPE to make them behave in the same way.

* Bugfix for the REPORT_CTCSS config variable. Depending on the locale
  settings (e.g. the LC_NUMERIC environment variable) the wrong CTCSS
  frequency could be announced.

* Bugfix: Setting DTMF_MUTING=0 did not remove the audio delay, which it
  should do.

* Sound clips are now included for module MetarInfo.



 1.2.0 -- 29 Jul 2013
----------------------

* Added support for EchoLink proxy.

* ModuleEchoLink: Now possible to configure multiple servers for the directory
  server. The servers will be tried in order until a working one is found.
  The SERVER config variable has been replaced by the SERVERS config variable
  which is a space separated list of servers. Host names that resolve
  to multiple IP addresses, like servers.echolink.org, will also be correctly
  handled so that each resolved IP address will be tried in order until a
  working one is found.

* Added support for PTT on GPIO. This is for example good for embedded
  systems like the Raspberry Pi where GPIO pins are readily available. Using
  GPIO will eliminate the need for a USB to serial converter.
  Patch contributed by K1FSY / David.

* ModuleEchoLink: New TCL function "is_receiving" that is called when a remote
  EchoLink transmission is started or stopped. The default implementation will
  send a beep over the local transmitter.
  Patch from DL1HRC / Adi.

* Now possible to force the transmitter off using a DTMF command. The new
  configuration variable SHUTDOWN_CMD is used in a logic configuration
  section to set the command that should be used. The node will continue
  to operate as usual with the only difference that the transmitter will
  not be turned on for any event.



 1.1.0 -- 06 Jun 2013
----------------------

* Bugfixes in APRS statistcs.

* Modified DTMF-decoder's bandwidth to be more tolerant against voice audio
  and to comply with the ITU-T Q.23 und Q.24 standards.
  Patch from Steve / DH1DM.

* ModuleParrot: A new event handler has been added which make it possible to
  play a sound, for example a roger beep, when the recorded audio has been
  played back.

* ModuleEchoLink: Added an autoconnect feature where one EchoLink ID can be
  set up for auto connection. SvxLink will try to connect whenever idle.
  Original patch by Robbie / ON4SAX and Volodymyr / UR3QJW.

* 16kHz internal sampling frequency is now the default. This will increase
  the theoretical audio bandwidth from 4kHz to 8kHz. In reality the frequency
  response starts falling off after 5.5kHz due to filtering.

* Improved pre/de-emphasis filters.

* The QSO recorder now print out when being activated and deactivated.

* ModuleEchoLink: Now possible to disable use of Speex for EchoLink. This can
  be of use when running SvxLink on a system that have a less powerful CPU.
  New config variable: USE_GSM_ONLY. Have a look at the ModuleEchoLink (5)
  manual page for more information.
  Patch from Adi / DL1HRC.

* Improved error handling when reading the SQL_DELAY, SQL_START_DELAY and
  SQL_TIMEOUT config variables.

* Bugfix: There were an audio stuttering problem at the end of the long ident
  when using 16k internal sampling rate on slower hardware. This has now
  been fixed.

* ModuleEchoLink: The language for remote announcements were always the
  default. The DEFAULT_LANG config variable were ignored. Now it is possible
  to set a DEFAULT_LANG config variable in the ModuleEchoLink.conf file which
  only affect remote announcements.

* Improved printouts so that it's easier to see which part of SvxLink (logic,
  module etc) that made the printout. Also added a printout for receiver and
  transmitter creation.

* ModuleEchoLink: Listen only was falsely indicated when the EchoLink module
  was remotely activated.

* Periodic identifications were missing now and then under some conditions.
  This should be fixed now.

* The maximum QSO limit (MAX_QSOS) did not work for outgoing connections for
  all use cases.

* Now possible to specify NONE for RX and TX in all configs. For example,
  previously it was not possible to specify NONE for uplink RX or TX in
  RemoteTrx.



 1.0.0 -- 08 Mar 2013
----------------------

* Moved from sigc++ version 1.2 to version 2.
  Patch contributed by Felix/WU8K.

* The CTCSS detector has been improved. It is now much faster and have
  a lower false trigger rate in its default configuration. The mean
  detection time is now about 200ms where it previously was about 450ms.
  Previous configurations will have to be changed to adapt to the new
  detector. Have a look in the manual page at the new configuration
  variables: CTCSS_MODE, CTCSS_OPEN_THRESH, CTCSS_CLOSE_THRESH,
  CTCSS_SNR_OFFSET, CTCSS_BPF_LOW and CTCSS_BPF_HIGH. The CTCSS_THRESH
  configuration variable is obsolete.

* Now possible to set RTS and/or DTR to a static state by configuration
  if needed. Have a look at the SERIAL_SET_PINS config variable for the
  LocalRx and LocalTx sections in the svxlink.conf.5 manual page.

* Improved the SigLevTone detector using the same techniques that was
  used to improve the CTCSS decoder.

* Now possible to block incoming Echolink connects from stations if they
  connect too often. New config variable: CHECK_NR_CONNECTS.
  Patch from Adi/DL1HRC, reworked by SM0SVX/Tobias.

* Bugfix in Metar information module: SvxLink could crash if two
  requests were made in rapid succession.

* Now possible to have personal greetings on incoming EchoLink connections,
  if desired. Some TCL coding is neccessary to enable it though.

* Improved voter implementation that can vote continously and not only at the
  start of a transmission. By default it will check the signal strength for
  all receivers once per second and switch to the strongest one if the
  difference is large enough. New config variables: REVOTE_INTERVAL,
  HYSTERESIS, SQL_CLOSE_REVOTE_DELAY, RX_SWITCH_DELAY.

* ModuleEchoLink: The text "[listen only] is now prepended to the sysop name
  if listen only mode is active.

* New feature "extended squelch hangtimne" added. It is now possible to
  configure an extended squelch hangtime that is activated when the
  signal strength fall below a given threshold.

* Now SvxLink can send APRS statistics about RX squelch open count,
  TX on count, RX squelch open time and TX on time.
  Patch from Adi / DL1HRC.



 0.13.1 -- 27 Nov 2011
-----------------------

* Bugfix in RemoteTrx: Could crash when a Net uplink was disconnected.



 0.13.0 -- 05 Nov 2011
-----------------------

* Added selective calling system Motorola QC2.

* Small bugfix in RepeaterLogic: TX down was not always correctly handled
  on interference shutdown.

* Bugfix in ModuleEchoLink: The "last disconnected station" variable was
  updated even if a connection was rejected. This affected the "connect
  to the last disconnected station" command.

* New feature: 1750Hz tone call muting. Use the 1750_MUTING configuration
  variable in a local receiver configuration section to enable this new
  feature. This feature was contributed by Adi / DL1HRC.

* FAI alerts is now taken care of in the PropagationMonitor module.
  Patch from Adi / DL1HRC.

* Improved handling of SQL_HANGTIME and SQL_DELAY when using CTCSS. Now
  the ToneDetector itself handle the delays which is much better.

* Bugfix in RemoteTrx: Groups was not properly setup so remotetrx
  could not access stuff that it should have right to do.
  Patch contributed by Eren / TA1AET.

* TEP and F2 alerts are now taken care of in the PropagationMonitor module.
  Patch from Adi / DL1HRC.

* Bugfix in the MUTE_TX_ON_RX feature in RemoteTrx. The PTT would activate
  even if muted.



 0.12.0 -- 14 May 2011
-----------------------

* Bugfix in the EchoLink module: Short callsign (<6 chars) was not handled
  correctly in the APRS code.

* Added a QSO recorder feature that can record all traffic on the channel.
  The QSO recorder can be turned on and off using a DTMF command.
  New configuration variables: QSO_RECORDER_DIR and QSO_RECORDER_CMD.

* The voice mail module now store the messages as WAV files. Old messages
  will have to be removed or converted into WAV files.
  Old filename format: YYYYMMDD_hhmmss_UUU{.subj,.mesg}
  New filename format: YYYYMMDD_hhmmss_UUU{_subj,_mesg}.wav

* Voice mail messages are now time limited to a maximum time. Default
  is 10 seconds for the subject and two minutes for the message.

* Bugfix: The SQL_TIMEOUT function did not work as expected.

* The repeater_down TCL function now have a "reason" argument that
  can be either "IDLE" or "SQL_FLAP_SUP".

* It is now possible to have a "local" subdirectory in the events.d
  directory where the TCL files in the "local" directory will override
  the TCL files in the events.d directory.

* Added a threshold to the tone detector so that it is less prone to
  trigger on silence. This was a problem when using CTCSS squelch
  on a radio operated with closed squelch.

* Implemented a signal level transmission mechanism based on multiple
  tones, one for each signal level step, in the high audio frequency
  spectrum (5.5 - 6.5kHz). This can be used for linking in remote
  receivers via RF but still measure the signal strength at the
  remote receiver site. To map the signal level to tone frequencies
  on the remote receiver side, either RemoteTrx can be used or an
  Atmel AVR ATmega8 can be used for a more compact solution. The AVR
  microcontroller solution take a signal level voltage and converts
  that to one of ten tones which should be overlayed on the link audio.
  Note: Tone transmission in RemoteTrx will only work if it has been
  compiled in 16kHz mode. This is due to the high tone frequencies used.

* New feature: Tell repeater users that are not identifying to
  identify themselvs. The time to wait for an identification, after the
  repeater has been activated, is set using the IDENT_NAG_TIMEOUT
  configuration variable. A valid identification is considered to be
  a transmission longer than the time set by the IDENT_NAG_MIN_TIME
  configuration variable. We don't know if it's really an
  identification but it's the best we can do.

* New feature: The repeater can be told to activate again if the squelch
  openes within a specified time from repeater close. Use the new
  configuration variable OPEN_ON_SQL_AFTER_RPT_CLOSE to set this up.

* The TX_CTCSS feature have now been extended so that CTCSS tone
  can be transmitted if there is incoming traffic from another
  logic core (LOGIC), a module (MODULE) or if an announcement
  is being played (ANNOUNCEMENT). Previously there were only two
  choices, to send CTCSS tone when the squelch was open
  (repeater use) or to always do it.

* Bugfix: In the previous release all sound clips were converted
  to WAV files instead of RAW files. When the EchoLink module
  announce a conference name it looks for a file called
  conf-conf_name.wav (e.g. conf-linux.wav). Previously it looked
  for a file with a ".raw" file extension.

* New module, PropagationMonitor. The propagation monitor module
  receive emails from vhfdx.net (or gooddx.net) and announce
  propagation alerts on the air using voice messages.

* New module, MetarInfo. Get METAR (weather) information from
  predefined ICAO locations and announce the information on the
  air. Usually airports give them out. Module contributed by
  DL1HRC / Adi.

* A hamming window was added to the tone detector and DTMF
  decoder to improve out-of-band audio rejection. Patch
  from DH1DM / Steve.

* Now possible to issue commands to the core and to other modules even
  when another module is active. This is achieved by prefixing the
  command with a "*". If for example the EchoLink module is active and
  you want to check if there are any voice mails available the command
  to issue could look like this: *3001#.

* The "connect by callsign" command changed from "*" to "6*".

* The help module can now accept commands when not active. It will read
  back help for the given module ID. For example the command 01# will
  play the help message for the parrot module.
  
* The parrot module can now accept commands when not active. The only
  thing it can do is to read back the entered digits. For example the
  command 1123# will make the parrot module say "one two three".

* The EchoLink module can now accept commands when not active. The only
  command supported at the moment is "2", reading back the local node ID.
  Example: 22#

* Now users can check if there are any voice mail messages
  available without first logging in. Idea from Martin Burkhardt.
  The command to use is <module id><user id> so if the module id for
  voice mail is 3 and your user id is 001, the command to check if
  there are any voice mails available is 3001#.

* The DTMF repeater module can now accept commands when not active. It
  will play back the entered digits. For example the command 4123# will
  play the 1, 2 and 3 DTMF digits.

* A macro command may now be specified without a module name. The colon
  separator is still required though. If no module name is specified, the
  command is sent in to the DTMF handler without activating a module first.

* It now is possible to include a hash mark in a macro command by
  specifying 'H' in the command string. The 'H' will be translated to a '#'
  by the command parser and not interpreted as "end of command". This can
  be of use if you for example want to transmit a DTMF # using the
  DTMF repeater module. The macro specification would look something like
  this: 10=412345H#. When macro 10 is activated the DTMF sequence 12345#
  will be transmitted.

* Now possible to link more than one logic core together. The LOGIC1 and
  LOGIC2 configuration variables have been replaced with one configuration
  variable called CONNECT_LOGICS.

* New config variable MUTE_TX_ON_RX for a NetUplink in RemoteTrx. This
  will stop the transmitter from transmitting if the squelch is open
  on the receiver.

* Support for selcall activated functions added. New config variables:
  Logic/SEL5_MACRO_RANGE, RepeaterLogic/OPEN_ON_SEL5,
  LocalRx/SEL5_TYPE and LocalRx/SEL5_DEC_TYPE. Have a look in the
  svxlink.conf (5) manual page for more details.

* New module SelCallEnc. This module is used to send selective calling
  sequences out on the frequency upon user request.

* One RemoteTrx application can now be used to run more than one remote
  transceiver. Previously two RemoteTrx instances had to be run to
  support two transceivers. This required two sound cards to be used.
  Now only one sound card can be used to support two transceivers.
  Due to this change the configuration have changed a bit. To get everything
  right, backup your old remotetrx.conf configuration file and use the
  new default configuration file to start over. Manually move configuration
  values from your old configuration file to the new file, carefully
  reading the updated manual page, remotetrx.conf (5), to get everythin
  right.

* Now possible to set a PTT hangtime for the local tx type. This can be good
  to have on a link transmitter in combination with a tone squelch. When
  the transmitter is ordered to stop transmitting, the tone is immediately
  turned off, causing the squelch to close on the other side. Since the
  transmitter keeps transmitting for a while, no squelch tail will be heard.

* The DTMF repeater module now wait until all announcements have been played
  before retransmitting the digits.

* The EchoLink module can now use the Speex audio codec on connections
  between two SvxLink nodes which improves the audio quality a lot.
  Patch contributed by Steve / DH1DM.

* Added a fallback repeater mode to the RemoteTrx which can be used
  if using it as both RX and TX for a repeater. If the network
  connection is lost to the repeater, the RemoteTrx activates a very
  basic repeater mode, essentially just connecting the RX to the TX.
  Idea and original implementation by Adi / DL1HRC.

* Bugfix: The SQL_TIMEOUT feature did not work for all squelch detector types.

* Configuration variable VOX_LIMIT has been renamed to VOX_THRESH.

* SvxLink system global configuration files are now by default stored in
  the /etc/svxlink directory.

* New directory layout for event scripts and sound clips. The main event
  scripts are now stored in /usr/share/svxlink/events.d. The sound clip
  files are now stored in /usr/share/svxlink/sounds/<langcode>. TCL
  modules have been separated from the event handlers and are now stored
  in /usr/share/svxlink/modules.d

* New configuration variable DEFAULT_LANG that points out the default
  language to use.

* All TCL-modules have been split into two parts, the module logic and
  the event handlers. This has been done to make the process of
  creating and maintaining translations easier and also to make on the
  fly language switching easier.

* The ModuleTcl API for TCL modules changed a bit so external TCL
  modules have to be adapted to the new API. There are no big changes.
  Just a number of functions that have changed their names. The names
  have been changed from my_func_name to myFuncName.

* Bugfix in ModuleEchoLink: SvxLink would crash if no stations were
  found when using the random connect feature.

* New squelch detector type: EVDEV. This squelch detector read events
  from a /dev/input/eventX device node. This can for example be of use
  if you have a USB audio device with some buttons on it. If you're in
  luck, it generates events when the buttons are pressed.

* Better error handling for the DTMF command parser. Previously if for
  example two modules were setup with the same module id, SvxLink would
  just quit with a cryptic error message.

* Now possible to reject and/or accept outgoing EchoLink connections to
  specified stations using regular expressions in the same way that incoming
  connections can be limited. New configuration variables: REJECT_OUTGOING
  and ACCEPT_OUTGOING.

* Changed the name of some configuration variables in the EchoLink module
  DROP -> DROP_INCOMING, REJECT -> REJECT_INCOMING and
  ACCEPT -> ACCET_INCOMING.

* Bugfix: Playing sound clips in the startup TCL event handler did not work.



 0.11.0 -- 26 Apr 2009
-----------------------

* The SvxLink internal sample rate is now configurable by a compile time
  define (INTERNAL_SAMPLE_RATE in makefile.cfg).

* The effects volume is now only lowered as long as there are traffic
  coming into the logic core. Previously, the volume was lowered even
  after, for example, the squelch had closed. Patch contributed by
  Steve / DH1DM.

* New DTMF decoder derived from the SpanDSP code. Contribution by
  Steve / DH1DM.

* New tone detector implementation. Contribution by Steve / DH1DM.

* Increased 1750Hz tone burst detector bandwidth from 25 to 50Hz.
  Steve / DH1DM.

* Steve also contributed a couple of other improvements, bugfixes
  and workarounds.
  
* Bugfix in CW.tcl: The CW code for 'L' was incorrectly mapped to '..-.'.

* Two new command line options added to SvxLink Server and RemoteTrx:
  --pidfile and --runasuser.

* The detection bandwidth for CTCSS repeater open have been narrowed
  down from 8 Hz to 4 Hz.

* Improved the RemoteTrx protocol: HMAC-SHA1 authentication, security
  checks and most important, audio compression. It is not compatible
  with the old protocol.
  The authentication code also require a new dependency: libgcrypt.

* Added an audio pacer for message playback so that the audio output
  fifo will not be filled up when playing messages. If it fills up,
  this will cause a delay for other audio.

* Bugfix: The repeater logic hung when using the NO_REPEAT option.

* Added a squelch timeout for receivers so that a faulty receiver cannot
  block the system indefinitly. Use the SQL_TIMEOUT configuration variable
  to set this up.

* RepeaterLogic: The reason for repeater activation is now given in the
  repeater_up event handler function. This make it possible to implement
  different behavior depending on how the repeater was activated.

* Patch from DH1DM: Supressing roger beep after periodic id:s in
  RepeaterLogic.

* Bugfix: Log lines were not flushed out to the log file immediately since
  stdout was block buffered by default. Now it's forced to line buffered
  mode instead.

* Now skipping characters we don't know how to spell in the spellWord TCL
  function.

* Bugfix: It was not possible to chain two voters together.

* Bugfix: SvxLink would hang if an audio clip was missing.

* APRS and EchoLink location info (link status page) functionality in
  ModuleEchoLink added, contributed by DH1DM/Steve and DL1HRC/Adi.
  There is a new configuration section, "LocationInfo" for this
  and a new config variable LOCATION_INFO in the ModuleEchoLink.conf
  configuration file.

* SvxLink can now read WAV files. However, only 8k sampling rate,
  mono, 16 bit signed formated files are supported.

* The config file reader did not enforce a specific file extension which
  could cause strange effects when using an editor that save backup files
  in the same directory as the config files reside. Now all, except the
  main config file, must have the extension ".conf".



 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 distortion. 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.

