Go back to main page

unixcw - news


Release of unixcw version 3.5.1.

Changes since version 3.5.0:


  • Fixing a bug in libcw/generator that may have lead to a key being permanently in "down" state upon silencing a generator. If cwdaemon using libcw with NULL or Console output was generating tones from user input, and received ESC-4 escape request ("Abort currently sent message"), it was possible that while the message was interrupted, the key remained in "down" state. The fix in libcw makes sure that upon request to stop generating tones, the key always goes up, regardless of audio output type. The bug was reported and investigated, and fix was provided by Csahok Zoltan. Many thanks Zoli!

  • Library soname/version changed from 6.5.1 to 6.6.1.


  • Fixing problem with compilation of application.cc file.

At this point I should mention that there is an experimental branch in git repository with experimental version of libcw. The library will allow creation of multiple instances of generator, key and receiver in a single application.


Release of unixcw version 3.5.0.

Changes since version 3.4.2:


  • Adding few more small tests.

  • Trying to fix a problem of short space. The problem occurs when client application has registered low-tone-queue callback, the threshold for the callback is set to 1, and a single end-of-word space has been enqueued by client application. When the eow space is enqueued as a single tone-queue tone (or even as two tones) ("short space"), older versions of libcw may miss the event of passing of tone queue level from 2 to 1 and will not call the callback.

  • Library soname/version changed from 6.4.1 to 6.5.1.


  • Porting the application from Qt4 to Qt5


This is an official release of unixcw version 3.4.2.

Changes since version 3.4.1:


  • Fixing one possible cause of segfaults in generator code (segfaults occurred when pthread_kill() was called with invalid thread ID in some specific circumstances).

  • Fixing another problem with libcw: when a generator is created, then is *not* started, and then is deleted, libcw called pthread_kill(&id, ...) on uninitialized id in cw_gen_delete(). This caused a program to crash.

  • Fixing problems with OSS and generator modules that surfaced during tests on Alpine Linux.

  • Expanding unit tests.

  • libcw is now compiled with -DNDEBUG flag by default (asserts are "off"). The asserts are still "on" by default in "unit tests" libcw. Asserts are switched "on" in base libcw with "./configure --enable-dev".

  • cw_generator_set_tone_slope(): some corner cases of handling function's arguments were cleared in function's top level comments, and implementation has been updated accordingly.

  • Library soname/version changed from 6.3.1 to 6.4.1.


This is an official release of unixcw version 3.4.1.

Changes since version 3.4.0:


  • The remainder of code from libcw.c has been moved to respective module files. New module file has been created: libcw_rec.c - it contains receiver code. I think that number of modules won't change anymore. libcw.c has been removed, all functionality is now implemented by module files.

  • A number of unit test functions has been moved from libcw_test_public.c to respective module files. These functions can be executed independently, so there is no reason to keep them in libcw_test_public.c. They can be kept in module files, close to tested library functions. libcw_test_public.c is now less difficult to work with. The moved test functions are now executed while building "make check" target, so they should be called more often, increasing the chances of catching problems early.

  • Data sets for some of receiver's unit tests are now generated by helper functions. This allowed me to increase size of the data sets and increase variation of the data (both for fixed speed receiving and for adaptive receiving).

    The data sets are basically timing tables used to drive the receiver - to test main functions of the receiver, responsible for accepting mark/space events from client code.

    The increased size and variation of the test data gives me more confidence that the core functionality of the receiver works as expected.

  • If you run libcw in debugging mode and you depend on Receiver State names (strings starting with RS_) printed by library's debug messages, you may want to check changed values of RS enum and corresponding strings on top of libcw_rec.c - they have been changed.

  • Some changes have been made to library functions (mainly in generator and receiver modules) to ensure that the code separated between modules can be compiled and that it works as expected. Since receiver code has been put in a separate file, it was possible to review and refactor the receiver code a bit.

    No functionality of the library has been changed, with an exception described in next point.

  • Data type of receiver's speed is now internally a float instead of int. This change improves behaviour of adaptive receiving algorithm a bit. It's not a big change, but it may positively impact client code using receiver functions.

  • libcw_test_public test executable now accepts '-m' command line option (for selecting module(s)) to test. Check output of 'libcw_test_public -h' for more details.

  • Since the modification described above does not change how the library works, nor does it change any API, there is no reason for any major revision changes. Library soname/version has been changed from 6.2.1 to 6.3.1.

Older news

Top of page
Go back to main page