cwdaemon 0.13.0 / 2024.08.04

New release. Changes since previous release:


* Bug fixes

    * cwdaemon was accepting value 65536 for command line option
      "-p"/"--port". This has been now fixed: cwdaemon accepts values only in
      range <1024 - 65535> (inclusive).

    * Adding a workaround for libcw issue where libcw can't handle correctly
      value ((unsigned char) 255) passed to cw_send_character().

      The issue was found in libcw 8.0.0 from unixcw 3.6.1. The issue was
      fixed in unixcw commit c4fff9622c4e86c798703d637be7cf7e9ab84a06.

      Until cwdaemon will start depending on a specific version of libcw that
      has this fix included, cwdaemon must be able to work around this
      problem.

      The workaround is to notice if a string passed to cwdaemon contains the
      problematic character, and simply not call cw_send_character() for that
      one specific character. Other characters in the string are still passed
      to cw_send_character().

      This change doesn't affect replies sent by cwdaemon to clients after
      processing "caret" requests or "<ESC>h": the replies still contain
      verbatim copy of string sent by the client, including the ((unsigned
      char) 255) character.

    * Fixing GitHub issue https://github.com/acerion/cwdaemon/issues/12:
      improper state of tty cwdevice's pins.

    * A fix to GitHub issue #12 (mentioned in previous bullet point)
      introduces a change/fix to resetting of tty cwdevice's pin functions.

      Until now (since v0.11.0) when cwdaemon received "change cwdevice"
      Escape request, the assignment of functions (keying/ptt) to tty pins
      (DTR, RTS) specified through command line options would be lost during
      handling of the Escape request. Handling of the request would reset the
      assignment to cwdaemon's defaults, which may be different than assignment
      specified through command line options.

      A commit that fixes GitHub issue #12 also fixes the problem described
      above. Now any changes of cwdevice through "change cwdevice" Escape
      request will preserve assignment of functions to tty lines specified
      through command line options (if any assignment was made).

    * Proper definition of cwdaemon's reply buffer size fixes a problem with
      too small buffer. Depending on version of recent code
      (post-0.12.0 code currently in development), the incorrect size of the
      buffer resulted either in writing one byte beyond the buffer, or in
      truncation of reply. Both cases happened only for very long requests,
      so it was rather a corner-case.

      The problem with size of the buffer was found thanks to fuzzing tests.

    * Fixing minor memory leak in code handling re-configuration of tty
      cwdevices.

      The leak fixed in this release is small but in specific circumstances
      could grow. The leak could be triggered by constant changes of cwdevice
      through Escape request.

      A related memory leak that does not grow over time is still present in
      cwdaemon's code. Fixing it requires deeper changes to management of
      cwdevice. Since the leak is small and constant, I'm postponing this fix
      till next version of cwdaemon. See ticket R0018 in README.dev.org for
      more details.

      This leak was found by running fuzzing tests. It could have been found
      also by using appropriately crafted functional test.

    * Fixing not switching of cwdevice when handling of CWDEVICE Escape
      request (<ESC>8)

      Switching of keying device was not functioning correctly. As a result,
      the old device (device used before issuing the request) was used for
      keying and ptt.

      Tests suite now includes a functionality test that verifies correctness
      of handling of the request by cwdaemon.

      git commit: 43d150247534e26e1116af3d973b31923c6dbc86

    * Fixing problem where switching to different sound system using SOUND
      SYSTEM Escape request resulted in no keying on cwdevice's keying pin

      Sending SOUND SYSTEM Escape request (<ESC>f) to change sound system
      (none/OSS/ALSA/PulseAudio) used by cwdaemon disabled toggling of keying
      pin on a cwdevice.

      See ticket R0030 in README.dev.org for more info.

      git commit: e1598cb736aa169e48df89ed3b3b2ba12fb0f706

      A workaround for this problem in versions before a fix is to send RESET
      Escape request (<ESC>0). Be aware that the request resets selected
      parameters of cwdaemon to their initial state (as they were configured
      at startup, perhaps with command line options).

    * Fixing resource leak when handling a CWDEVICE Escape request (<ESC>8)

      cwdaemon didn't close a file descriptor for old cwdevice while
      switching to new cwdevice specified in the request.

      git commit: a59f9669c337e0d31ff0d3cea083fb03edd4c65e


* Quality Assurance

    * Fixing issues found in C code by current version of clangd LSP server.

    * Improving procedures/tools/scripting for using clang-tidy. It's now
      easier to invoke clang-tidy on the code base: clang-tidy is invoked
      through a script that runs run-clang-tidy. run-clang-tidy requires the
      presence of compile_commands.json, which needs to be created by
      manually invoking `bear` command.

    * .clang-tidy configuration file is now added to root directory of
      project. There are a lot of excluded checks in the configuration file,
      but the list of exclusions will be decreased in future releases.

      The list of exclusions will never become empty because some of checks
      won't apply to this project.

    * Fixing a bunch of issues found by clang-tidy (in cwdaemon code and in
      code implementing unit and functional tests).

    * Path to cwdaemon binary used during functional tests can be specified
      through an argument to ./configure script:

          ./configure --enable-functional-tests --with-tests-cwdaemon-path=/home/user/sbin/cwdaemon

      This allows running a set of functional tests against any version of
      cwdaemon. It's e.g. possible to run the latest set of tests against
      some older release of cwdaemon to see how that release behaved.

      The ./configure script defines a default path to cwdaemon binary. The
      default path is overwritten with the value passed to the script.

    * Name of tty cwdevice to be used during functional tests can be
      specified through an argument to ./configure script:

          ./configure --enable-functional-tests --with-tests-tty-cwdevice-name=ttyUSB1

      The ./configure script defines some (platform-specific) default name of
      the name. The default name is overwritten with the value passed to the
      script.

    * Adding functional test for corner cases of "-p"/"--port" command line
      option.

      Existing other functional tests already are indirectly testing the
      option by passing it to cwdaemon with various valid values of network
      port.

      The new, dedicated functional test is testing corner cases where
      selected values of network port (valid and invalid) are passed to
      cwdaemon through "-p"/"--port" command line option. The test verifies
      if cwdaemon starts (or doesn't start) as expected.

      The test is located in tests/functional_tests/unattended/option_port/.

    * Adding functional test for "caret" request.

      The test is only testing basic test cases where only a single "caret"
      request is being sent. More complicated scenarios are not being tested
      (yet).

      The test is located in tests/functional_tests/unattended/request_caret/.

    * Adding functional test for CWDEVICE Escape request (<ESC>8)

      The test was created to confirm presence of a problem reported by user,
      and to confirm a proper handling of the request in fixed code. The bug
      is described above in "Bug fixes" section.

      The test is located in
      tests/functional_tests/unattended/request_esc_cwdevice/.

    * Adding functional test for SOUND_SYSTEM Escape request (<ESC>f)

      The test was created to confirm presence of a problem reported by user,
      and to confirm a proper handling of the request in fixed code. The bug
      is described above in "Bug fixes" section.

      The test is located in
      tests/functional_tests/supervised/request_esc_sound_system/.

    * Adding functional test for PORT Escape request (<ESC>9)

      This Escape request is obsoleted and doesn't do nothing, but as long as
      it is present in code I need to test it.

      I have created a supervised test for this feature because I simply
      didn't want to test it fully manually over and over again in this
      release and in future releases.

      The test is located in
      tests/functional_tests/supervised/request_esc_port/.

    * Unit tests have been added for following existing code:

      - cwdaemon_get_long() function
      - cwdaemon_option_network_port() function

    * Adding "-D_FORTIFY_SOURCE=2" to list of arguments passed to C compiler.

    * Adding following flags to CFLAGS:

      -Walloc-zero -Warith-conversion -Warray-bounds=2 -Wattributes
      -Wcast-align=strict -Wformat-nonliteral -Wformat-overflow=2
      -Wformat-security -Wformat-signedness -Wformat-y2k
      -Wimplicit-fallthrough=3 -Wimplicit-int -Wincompatible-pointer-types
      -Winit-self -Wmain -Wmisleading-indentation -Wmissing-include-dirs
      -Wnested-externs -Wold-style-definition -Wpointer-sign
      -Wshift-overflow=2 -Wstack-usage=1000000 -Wstrict-aliasing
      -Wstrict-overflow=4 -Wstringop-overflow=4 -Wtrampolines -Wundef
      -Wuninitialized -Wunused -Wunused-macros -Wunused-parameter
      -Wunused-result -Wvla

    * Adding most basic support for gcov/lcov to find holes in unit-tested
      code. Four relevant commands are:

      - ./configure --enable-gcov
      - make gcov
      - <web browser> tests/unit_tests/coverage/<subdir>/index.html
      - make gcov-clean

      For now this works only on Debian.

    * Removing ./tests/cwtest_esc5.pl functional test. There is no need to
      keep the test written in Perl when testing of handling of EXIT Escape
      request is now tested by
      tests/functional_tests/unattended/request_esc_exit/ test that is more
      detailed.

      Handling of EXIT request is also indirectly tested by other functional
      tests written in C. In each such test the test instance of cwdaemon is
      asked to EXIT at the end of test or test case, and proper exiting is
      monitored and verified in the tests.

    * Removing ./tests/cwtest_escf.pl functional test. There is no need to
      keep the test written in Perl when testing of handling of SOUND SYSTEM
      Escape request is now tested by
      tests/functional_tests/supervised/request_esc_sound_system/ test that is
      more detailed (it allows automatic receiving of Morse code on
      cwdevice).

    * Removing ./tests/cwtest_esc8.pl functional test. There is no need to
      keep the test written in Perl when testing of handling of CWDEVICE
      Escape request is now tested by
      tests/functional_tests/supervised/request_esc_cwdevice/ test that is
      more detailed (it allows automatic receiving of Morse code on
      cwdevice).

    * Adding simple fuzzing test

      A simple fuzzing test is sending random requests to cwdaemon's network
      socket. The test is located in tests/fuzzing/simple/. The test has
      helped uncovering small problems in cwdaemon and one problem in libcw.


* Debugging of libcw

    When `-I`/`--libcwflags` option is passed to cwdaemon to enable debugging
    of specific functionalities in libcw, the threshold of libcw debug
    messages is set to the threshold currently used by cwdaemon.

    Until now the threshold set for libcw debug messages may have been
    hardcoded to constant value "NONE", which made debugging of libcw
    impossible.


* Misc

    * Refactored handling of following command line options:
      - "-p"/"--port",
      - "-I"/"--libcwflags"
      - "-y"/"--verbosity"

    * Improved documentation of the following command line options:
      - "-p"/"--port"
      - "-I"/"--libcwflags"

      in:

      - man page ("man cwdaemon")
      - help text ("cwdaemon --help")

    * man page now has separate chapters with generic description of network
      requests and replies.

    * man page now has "Quick start" section that has been added to make
      introduction to cwdaemon easier.

    * man page now includes information that it's possible to terminate tuning
      with ABORT Escape request.



----



cwdaemon 0.12.0 / 2023.05.21

New release. Changes since previous release:

* Making handling of command line options more strict

  cwdaemon is more likely to exit when it discovers unrecognized tokens in
  command line.

  This change is introduced to detect incorrect usage of "-o" command line
  option. Each option for keying device should be passed through separate
  "-o" option.

  Incorrect: "cwdaemon -d /dev/ttyUSB0 -o key=DTR ptt=none"
  Correct:   "cwdaemon -d /dev/ttyUSB0 -o key=DTR -o ptt=none"

  The behaviour of "-o" option itself is not changing. Only the overall
  parsing of command line options is changing to catch this incorrect
  situation.

* Init system files have been updated with handing of keying device option

  The "-o"/"--options" command line option has been introduced in cwdaemon
  0.11.0. In this release the init files for cwdaemon (/etc/init.d/cwdaemon
  and /etc/default/cwdaemon) are updated to support the new command line
  option. The files are located in debian/ directory in cwdaemon repo.

* Fixing memory problems occurring when handling tty device options

  - Small, one-time memory allocation was not followed by deallocation.
  - According to valgrind, a section of code may have relied on uninitialized
    member of allocated struct.

* "cwdaemon -V" now prints information about used libcw library

  In addition to printing version of cwdaemon program, the command also
  prints version of used libcw library (this is a run-time information, not a
  compile-time information).

  This change should help me with debugging users' problems: I will be able
  to set up an env similar to used by users reporting problems.

* Keying device used by cwdaemon can be now specified by a full path

  Till now "-d"/"--cwdevice" command line option accepted only device name
  (e.g. "ttyS0"). Starting with this release, the device can be also
  specified by a full path to device in /dev/ dir (e.g. "/dev/ttyS0").

  The change also impacts "<ESC>8" escaped request.

  This change should help avoiding problems with specifying a keying device.

* Adding error messages in code that tries to open a keying device (tty or lp
  device)

  This change should help with debugging of issues with keying devices in
  users' env.

* Format of log messages has been adjusted

  - Tags indicating message priority, printed at the beginning of message,
    are now "[ERROR]", "[WARN ]", "[INFO ]", "[DEBUG]".
  - The messages first show priority tag, and then package name (e.g.
    "[ERROR] cwdaemon: some text").
  - Consistency of format of messages has been improved.

* Adding Doxygen configuration file

* Adding "make check" command

  The command compiles and runs unit tests. The unit tests have been added in
  this release to quickly test some functionalities of cwdaemon. The unit
  tests don't require any additional infrastructure (e.g. a keying device)
  and they don't depend on any additional libraries or programs. This means
  that they can be executed anywhere, at any time.

  At this moment the unit tests only cover two newly added utility functions.

* Compiling and testing on following platforms:

 - Debian GNU/Linux 11.7, x86_64, gcc 10.2.1, libcw 6.6.1 (unixcw 3.5.1-4)
 - Alpine Linux 3.17, x86_64, gcc 12.2.1, libcw 7.0.0 (unixcw 3.6.0)
 - FreeBSD 13.2-RELEASE, amd64, gcc 12.2.0, libcw 7.0.0 (unixcw 3.6.0)


----


cwdaemon 0.11.0 / 2022.03.26

New release. Changes since previous release:

* Implementing an "-o" option for flexible assignment of keying and ptt lines
  to RTS/DTR lines.
  GitHub pull request: https://github.com/acerion/cwdaemon/pull/3

* Fixing GitHub issue #6: "cwdaemon stops working after esc 0 (reset) is
  issued".
  GitHub issue: https://github.com/acerion/cwdaemon/issues/6

* Fixing few minor issues found through static code analysis.

* Minor refactoring of code.

* Compiling and testing on following platforms:
 - Debian GNU/Linux 11, x86_64, gcc 10.2.1, libcw 7.0.0 (unixcw 3.6.0)
 - Alpine Linux 3.15, x86_64, gcc 10.3.1, libcw 7.0.0 (unixcw 3.6.0)
 - Ubuntu 18.04.6 LTS, x86_64, gcc 7.5.0, libcw 7.0.0 (unixcw 3.6.0)


----


cwdaemon 0.10.2 / 2015.10.07

New release. Changes since previous release:

* Copying the repository to github.com. github will be now the new
  home of cwdaemon. The address is https://github.com/acerion/cwdaemon

* Testing against libcw 6.5.1 from unixcw 3.5.0.

* Compiling and testing on following platforms:
 - Debian GNU/Linux 8 jessie/sid, x86_64, gcc 4.9.2;
 - Alpine Linux 3.1, x86_64, gcc 4.8.3, musl 1.1.5;
 - FreeBSD 10.0, x86_64, clang 3.3;

* Fixing compilation error found during tests on Alpine Linux.

* Improving test sets (test/ directory).

* Improving examples of interfacing cwdaemon (examples/ directory).


----


cwdaemon 0.10.1 / 2014.04.23

New release. Changes since previous release:

* Fixing bug #1 reported by Pino Zollo ZP4KFX: cwdaemon failed to
  properly respond to <ESC>f Escape request. Attempting to change
  sound system used by cwdaemon caused the program to completely go
  silent and to not to send replies.

* Fixing bug #2 also reported by Pino Zollo ZP4KFX: cwdaemon has been
  sending replies too early, sometimes right after starting to play
  Morse characters (i.e. not waiting for end of playing the
  characters). This problem has been fixed by changes in cwdaemon
  source code, as well as by changes in unixcw/libcw source code (this
  is why you should use libcw version 6.1.1 from unixcw 3.3.1).

* Fixing bug #3 also reported by Pino Zollo ZP4KFX: description of
  escaped request for word mode in man page has been incorrect (wrong
  code of request). This has been fixed.

* Fixing bug #4, this one discovered by me: cwdaemon failed to
  correctly close network socket at exit. This has been fixed.

Many thanks to Pino Zollo ZP4KFX for reporting bugs in cwdaemon 0.10.0
and taking time to test fixes.


----


cwdaemon 0.10.0 / 2014.01.15

New release. Changes since previous release:

* Empty name of keying device sent with "8" network request shouldn't
  cause cwdaemon to crash anymore. Handling of empty/invalid keying
  device name has been improved.

* Until now if cwdaemon was called with invalid / unsupported /
  non-available sound system, it could start with misconfigured sound
  system. Now cwdaemon exits when it cannot open a sound system during
  start.

* When cwdaemon receives "switch to sound system X" network request,
  and it fails to correctly switch to the sound system, it falls back
  to "Null" audio system. The fall back eliminates possibility of
  crashing on attempt to use uninitialized sound system.

* Handling of "ptt delay" parameter has changed. Until now when value
  sent in network request was negative, the delay has been set to MAX.
  Now the negative value sent with network request is ignored.  When
  the negative value has been passed through command line argument,
  cwdaemon exits.

* Debug strings can be now printed to stdout (default, was already
  available), stderr, or disc file. Check -f / --debugfile command
  line option for more information.

* Verbosity level of debug messages can be controlled with command
  line options.

* cwdaemon now accepts --long-options on systems that support this
  functionality.

* Help text printed when calling cwdaemon with "-h" command line
  argument has been expanded.

* Man page for cwdaemon has been expanded.

This version of cwdaemon has been tested with libcw6.


----


cwdaemon 0.9.7 / 2013.01.11

New release.
The reason for this release is fixing some bugs reported by Thomas Beierlein:
 - <ESC>30 request has been setting volume to zero, but it was impossible
   to re-set the volume to non-zero value (e.g. with <ESC>3440). This now
   has been fixed.
 - reply mechanism replying to <ESC>h requests wasn't working correctly.
   Behaviour of the reply mechanism has been improved.
A Perl script testing cwdaemon (test/cwtest.pl) has greatly improved in the
process of fixing the second issue.

This version of cwdaemon is intended to be used with libcw5.
This version of cwdaemon has been barely tested by main developer.


----


cwdaemon 0.9.6 / 2012.07.04

New release.
Most of the changes in the release were introduced by Jenö Vágó, HA5SE
The changes include:
 - improved behaviour of PTT function,
 - completed implementation of basics of handshaking between cwdaemon and
   client application; this should allow the client application e.g. to send
   message char-by-char;
 - fixing some side effects of previously applied patches.

This version of cwdaemon is intended to be used with libcw4.
This version of cwdaemon has been barely tested by main developer.


----


cwdaemon 0.9.5 / 2012.04.09

New upstream release. The release has been made after taking over the project
by Kamil Ignacak <acerion@wp.pl> in January 2012.

This upstream version (0.9.5) is essentially an official upstream release of
Debian package 0.9.4-9, with Debian patches applied. No new features and no
new fixes were added to 0.9.5, compared to 0.9.4-9. Purpose of upstream
release 0.9.5 is to establish a starting point for revived cwdaemon project.

This release HAS NOT been tested.

New project home page: http://cwdaemon.sourceforge.net

Summary of changes in applied Debian patches:
 - "Removed bashism from cwsetup.sh script" (by Michael
   Meskes <meskes@debian.org>);
 - "Minor changes for transition from unixcw to libcw3" (by Kamil Ignacak,
   including fixes by Jenö Vágó, HA5SE);
 - "Checking for '\n' char that may occur at the end of TCP buffer."
   (by Jenö Vágó);
 - "Call to cw_wait_for_tone_queue() to prevent too early PTT OFF"
   (by Jenö Vágó);
 - "Install scripts with INSTALL_SCRIPT to get correct permissions"
   (by Kamal Mostafa <kamal@whence.com>);


----


cwdaemon (0.9.4)

  * Cwdaemon has been ported to the latest version of unixcw, version 2.3.
    First you need to configure and install unixcw, which adds the unixcw
    development library and headers to your system. When running cwdaemon's
    'configure', unixcw will be automatically included.
    See the INSTALL file for unixcw details.
  * Aborting (ESC4) has been improved by using select(). Cwdaemon will now
    abort even when in the middle of sending a character.
  * PTT has been implemented outside the unixcw libraries. This is untested,
    footswitch is also untested in this release.

cwdaemon (0.9.3)

  * This is a debian-only maintenance release.

cwdaemon (0.9.2)

  * Many patches by Jason L. Wright, AI4JW, which brings us OpenBSD support
    (you will need OpenBSD-current or the upcoming OpenBSD-3.7) and the
    following:
  * Better command line parsing and error checking added.
  * The 'none' sound device had been added in case you don't want a sidetone.
  * Free entry of portnames has been added, together with autodetection of
    ports. This should give is support for more platforms.
  * Many minor bugfixes.
  * A null device has been added, in case you want sidetone, but no keying
    (see 'man cwdaemon').

cwdaemon (0.9.1)

  * Fixes a possible buffer overflow.

cwdaemon (0.9)

  * ESCh will send echo to the program using cwdaemon when CW playing is done,
    using the '^' character. Added by Lada, OK1ZIA. This is used by tucnak,
    a VHF contest logging program, see http://tucnak.nagano.cz.
  * Debian init.d bootscript added by Lada, together with /etc/default/cwdaemon,
    which you can use to configure cwdaemon. Set START_CWDAEMON=no in
    /etc/default/cwdaemon to disable start at boottime.
  * Serial and parallel port now supported on FreeBSD. Parallel port and various
    BSD fixes thanks to Diane Bruce, VA3DB.

-- Joop Stakenborg <pg4i@amsat.org>  Mon,  3 May 2004 09:25:25 +0200

cwdaemon (0.8)

  * Cwdaemon is now integrated with unixcw, see cwlib.c and cwlib.h.
    Weighting has been added to unixcw and some special characters needed
    by cwdaemon. The choppiness reported in previous versions of cwdaemon is
    fixed. And we have soundcard support!
  * Better handling of aborting messages.
  * Weighting now uses a value of -50 to 50.
  * 2 extra command line options: -v for volume and -x for sound device.
  * 2 extra escape sequences for controlling cwdaemon: ESCfx for switching the
    sound output on the fly and ESCgx for setting the soundcard volume.
  * Tune (ESCc) now uses seconds as an argument, e.g. ESCc1 tunes 1 second,
    ESCc10 tunes 10 seconds. Maximum tune value is 10 seconds.
  * A fix by Lada, OK1ZIA for big endian systems.
  * Footswitch support by Wolf, DL2WRJ (pin 15 of the parallel port).
  * New morse character '@' has been added.
  * Process priority of cwdaemon can be set with the -P flag. You can try this
    if you experience timing problems.

 -- Joop Stakenborg <pg4i@amsat.org>  Mon, 26 Apr 2004 21:27:29 +0200

cwdaemon (0.7)

  * Band info output on pins 2, 7, 8, 9 of the parallel port
    (pin 2 = lsb, 9 = msb, e.g. 1000 = 160m, 1001 = 10m).
    Patch by Rein Couperus, PA0R.
  * Corrected the parallel port schematic for PTT switching.

 -- Joop Stakenborg <pg4i@amsat.org>  Sun, 26 Oct 2003 16:37:51 +0100

cwdaemon (0.6)

  * POSIX compliant in/output is now used for the serial and parallel port,
    which means that cwdaemon should now run on any hardware that runs linux.
    Please read the README for serial/parallel port setup.
  * Debian: set architecture to 'any'.

 -- Joop Stakenborg <pa3aba@debian.org>  Fri, 27 Jun 2003 20:46:20 +0200

cwdaemon (0.5)

  * Patch by Ladislav Vaiz, OK1ZIA <ok1zia@nagano.cz>:
  * Adds a pin to the lpt port for switching between a soundcard and
    microphone, uses ESCb escape code.
  * Lada has also split the code into separate files for the serial and
    parallel port.
  * Buffer overflows were fixed.
  * New escape codes: ESC8: device type, ESC9: base port number.
  * Work by Rolf, DL2WRJ:
  * ESCa: PTT on/off, ESCc: tuning on/off, ESCd: PTT delay.

 -- Joop Stakenborg <pa3aba@debian.org>  Sun, 11 May 2003 15:48:47 +0200

cwdaemon (0.4)

  * Support for /dev/lp1 parallel port added.
  * Add weighting. This can be set from the command line (-w switch) or
    from an application using ESC7. Values are from -5 to 5. Contributed by
    DL2WRJ.
  * Speed in/decrease is set at 2 wpm intervals.
  * Halfspace delay has been added, which simply adds half of the dash time
    to the delay after each sign send. You have to use the '~' for that.
    See the README. Contributed by DL2WRJ. Thanks Wolf!
  * New serial schematic with port protection and better keying.
  * Also build a debian package on alpha.

 -- Joop Stakenborg <pa3aba@debian.org>  Tue,  8 Apr 2003 20:57:20 +0200

cwdaemon (0.3) unstable; urgency=low

  * Support added for serial ports, contributed by Wolf-Ruediger Juergens,
    DL2WRJ <WJuergens at t-online.de>. This brings a new command line option:
    -d <device>. Device should be one of ttyS0, ttyS1 or lp0.
  * New function: errmsg for writing to the syslog or console when not forked.
  * Getopt is now used for command line parsing. Some checks added for correct
    UDP port values.
  * The dot-dash delay has been adjusted, so it sounds a bit better.

 -- Joop Stakenborg <pa3aba@debian.org>  Sat,  5 Apr 2003 12:41:49 +0200

cwdaemon (0.2.3)

  * Fix a bug reported by Wilbert Knol <zl2bsj at zl2tze.ath.cx>, cwdaemon
    would 'remember' previous lines, if they are longer than the current one.
  * Add some command line arguments (see cwdaemon -h). The default port can
    now be changed with '-p', '-n' will cause cwdaemon not to fork and print
    debug information to stdout.
  * Many cleanups (up till here 0.2.2 test release).
  * Fixed a divide by zero which would crash cwdaemon.
  * Use nanosleep instead of usleep.

 -- Joop Stakenborg <pa3aba@debian.org>  Sun,  9 Mar 2003 21:26:24 +0100

cwdaemon (0.2.1)

  * Use automake and autoconf.

 -- Joop Stakenborg <pa3aba@debian.org>  Sat, 18 Jan 2003 14:40:15 +0100

cwdaemon (0.2)

  * Initial release for debian.
  * Added support for german umlauts, "ringed a" and "n tilde".
  * Now installs by default in /usr/sbin.
  * Many cosmetic fixes.

 -- Joop Stakenborg <pa3aba@debian.org>  Sat, 11 Jan 2003 11:03:19 +0100

cwdaemon (0.1)

  * First public release by Rein, PA0RCT.

 -- Joop Stakenborg <pa3aba@debian.org>  Sun, 17 Nov 2002 21:15:11 +0100
