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
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
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
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
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
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
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
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
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
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
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
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.
Top of page
Go back to main page
Copyright (C) 2011 - 2017 Kamil Ignacak