cwdaemon - main page

About

cwdaemon is a small daemon which uses the pc parallel or serial port and a simple transistor switch to output morse code to a transmitter from a text message sent to it via udp port 6789. The program also uses the soundcard or PC speaker (console buzzer) to generate a sidetone.

Up until version 0.9.4 this software has been developed and maintained by Joop Stakenborg. Currently the software is being developed by Kamil Ignacak.

cwdaemon is developed and tested mainly on GNU/Linux system.

News

2024.08.03 - completely migrating to GitHub before making a release 0.13.0

After today, neither this page nor a code in repository at sf.net will be updated. All activities will take place exclusively at https://github.com/acerion/cwdaemon/.

GitHub has been the home of cwdaemon since some time, now I'm completing the move to that platform.




2023.05.21 - release of cwdaemon 0.12.0

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 handling 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 environment 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)



2022.03.26 - release of cwdaemon 0.11.0

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.
  • Testing cwdaemon against libcw 7.0.0 from unixcw 3.6.0.
  • 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)

2015.10.07 - release of cwdaemon 0.10.2

Changes since previous release:

  • Copying the repository to github.com. github will be now the new home of cwdaemon.
  • Testing cwdaemon 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).

2014.04.23 - release of cwdaemon 0.10.1

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).
  • 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.


2014.01.15 - release of cwdaemon 0.10.0

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.

Older news

More information

cwdaemon is a free software, released under GNU General Public License v2.0.

The latest code is available at github.

Older information is available on SourceForge project page.

You can contact with current developer and maintainer of this software using this e-mail address: acerion at wp dot pl.