File: README

package info (click to toggle)
unixcw 2.0-6
  • links: PTS
  • area: main
  • in suites: woody
  • size: 764 kB
  • ctags: 645
  • sloc: ansic: 5,693; cpp: 1,736; makefile: 333; sh: 213; awk: 209
file content (133 lines) | stat: -rw-r--r-- 4,920 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
		UNIX Morse Code Tutor, Version 2
		--------------------------------


Introduction
------------
The original Unixcw package, version 1, grew out of a desire to have a
program available under Linux that was very similar to the one I was
used to under DOS.  While several Linux Morse Tutors were, in fact,
still are, available, I never quite found one that did the stuff I
wanted.

From the original Unixcw package came version 2.  This is almost a
total rewrite, although it includes the same basic binaries as were in
version 1.  The two major changes are the addition of an extensive,
general purpose CW library, and also an Xwindows-based CW tutor
program.


The CW library
--------------
The heart of the package is 'libcw'.  This is a library which, when
built, offers the following basic CW services to a caller program:

  o Morse code character translation tables, and lookup functions
  o Morse code low-level timing calculations
  o A 'sidetone' generation and queueing system, using the console
    speaker
  o Optional keying control for an external device, say a transmitter,
    or an oscillator
  o CW character and string send routines, tied in with the character
    lookup
  o CW receive routines, also tied in to the character lookup
  o Adaptive speed tracking of received CW
  o An iambic keyer, with both Curtis 8044 types A and B timing
  o Straight key emulation

The library uses signals extensively to create a background task in
which to do the majority of its work, leaving the main program free to
handle other tasks.  For example, the simplest CW sending program that
uses the library looks like:

	#include <cwlib.h>
	int main (int argc, char **argv)
	    {
		/* Start the string sending in the background. */
		cw_send_string ("Hello, world");

		/* Wait for the string send to complete. */
		cw_tone_queue_wait ();
	    }

Instead of the cw_tone_queue_wait() call, this program could go off and
handle any other work it has to do, asynchronously from the CW library's
sending the string.

As well as the handful of applications included in Unixcw 2, the
the following sorts of programs might also use 'libcw' as their core:

  o A fully graphical CW send and receive station
  o 'CWbiff', announces incoming email sender in CW
  o Offline CW reader program, capable of decoding CW from MP3 or other
    audio file formats
  o A simple Iambic keyer for an external transmitter, using the mouse
    buttons as the keyer paddles
  o A more comprehensive CW tutor program
  o An automated Morse Code testing application

'cwlib' is coded in 'C' for easy portability and use.


Included applications
---------------------
The package comes with four basic applications:

  o cw    This is a CW sending 'engine',  that reads  characters
          from stdin,  sounds them on the  console speaker,  and
          echoes them to stdout.   It needs to use a device that
          understands the KIOCSOUND ioctl - a good way to run it
          on a system (character mode) console is with

              cw -d/dev/tty

  o cwgen This is a simple random character generator,  that can
          be used as a 'feed' for cw.  Example usage:

              cwgen | cw -d/dev/tty

  o cwcp  This is a curses-based menu program that will generate
          random morse, groups of characters from selected sets,
          words, and CW abbreviations randomly, sound them using
          'cw', and can handle changes of WPM and pitch from the
          keyboard.  It owes much to CP222.EXE, by VU2ZAP.

  o xcwcp This is X-based CW tutor program.  This version offers
          the same random and keyboard sending as 'cwcp', but in
          addition,  will also read CW that you send to it using
          the keyboard or mouse as a keyer, so you can use it for
          sending practice as well as receiving.

'cw' and 'cwgen' require only a basic 'C' compiler.  'cwcp' requires a
'C' compiler and a Curses library.  'xcwcp' requires a 'C++' compiler
and a copy of the Trolltech Qt library.  This library is fairly
standard on Linux systems, since it is the basis of KDE, so relying on
this should not be too much of a problem.


Building the library and programs
---------------------------------
Please see the file INSTALLING for details on how to build Unixcw
version 2 from the distributed sources.


License
-------
Unixcw is distributed under the GNU GPL.  Please see the COPYING file
for details.


Acknowlegements
---------------
Thanks to Kamal Mostafa, KA6MAL, for reviewing the cwlib API, showing
me the errors of my ways with 64-bit integers, and hounding me to add
the adaptive receive speed tracking, and to Joop Stakenborg, PA4TU,
for being a willing "guinea pig" with various snapshots of unfinished
versions of the package, and for his continued enthusiasm and interest
in maintaining Unixcw as a Debian Linux package.


Have fun
--------
Simon Baldwin, G0FRD
simonb@caldera.com