Documentation
¶
Overview ¶
Package cw implements the CW mode.
Index ¶
- Variables
- func BPMToDit(bpm int) time.Duration
- func BPMToSeconds(bpm int) float64
- func FarnsworthWPMToSeconds(wpm, fwpm int) float64
- func Send(ctx context.Context, setKeyDown func(bool), symbols <-chan Symbol, wpm int)
- func WPMToDit(wpm int) time.Duration
- func WPMToFarnsworthDit(wpm, fwpm int) time.Duration
- func WPMToSeconds(wpm int) float64
- func WriteToSymbolStream(ctx context.Context, symbols chan<- Symbol, text string)
- type Modulator
- func (m *Modulator) AbortWhenDone(done <-chan struct{})
- func (m *Modulator) ClearFarnsworth()
- func (m *Modulator) Close() error
- func (m *Modulator) Modulate(t, a, f, p float64) (amplitude, frequency, phase float64)
- func (m *Modulator) SetFarnsworthWPM(fwpm int)
- func (m *Modulator) Write(bytes []byte) (int, error)
- type Symbol
Constants ¶
This section is empty.
Variables ¶
var ( Dit = Symbol{1, true} Da = Symbol{3, true} SymbolBreak = Symbol{1, false} CharBreak = Symbol{3, false} WordBreak = Symbol{7, false} )
All symbols
var Code = map[rune][]Symbol{ 'a': {Dit, Da}, 'b': {Da, Dit, Dit, Dit}, 'c': {Da, Dit, Da, Dit}, 'd': {Da, Dit, Dit}, 'e': {Dit}, 'f': {Dit, Dit, Da, Dit}, 'g': {Da, Da, Dit}, 'h': {Dit, Dit, Dit, Dit}, 'i': {Dit, Dit}, 'j': {Dit, Da, Da, Da}, 'k': {Da, Dit, Da}, 'l': {Dit, Da, Dit, Dit}, 'm': {Da, Da}, 'n': {Da, Dit}, 'o': {Da, Da, Da}, 'p': {Dit, Da, Da, Dit}, 'q': {Da, Da, Dit, Da}, 'r': {Dit, Da, Dit}, 's': {Dit, Dit, Dit}, 't': {Da}, 'u': {Dit, Dit, Da}, 'v': {Dit, Dit, Dit, Da}, 'w': {Dit, Da, Da}, 'x': {Da, Dit, Dit, Da}, 'y': {Da, Dit, Da, Da}, 'z': {Da, Da, Dit, Dit}, 'ä': {Dit, Da, Dit, Da}, 'ö': {Da, Da, Da, Dit}, 'ü': {Dit, Dit, Da, Da}, '0': {Da, Da, Da, Da, Da}, '1': {Dit, Da, Da, Da, Da}, '2': {Dit, Dit, Da, Da, Da}, '3': {Dit, Dit, Dit, Da, Da}, '4': {Dit, Dit, Dit, Dit, Da}, '5': {Dit, Dit, Dit, Dit, Dit}, '6': {Da, Dit, Dit, Dit, Dit}, '7': {Da, Da, Dit, Dit, Dit}, '8': {Da, Da, Da, Dit, Dit}, '9': {Da, Da, Da, Da, Dit}, '+': {Dit, Da, Dit, Da, Dit}, '-': {Da, Dit, Dit, Dit, Dit, Da}, '=': {Da, Dit, Dit, Dit, Da}, '.': {Dit, Da, Dit, Da, Dit, Da}, ':': {Da, Da, Da, Dit, Dit, Dit}, ',': {Da, Da, Dit, Dit, Da, Da}, ';': {Da, Dit, Da, Dit, Da, Dit}, '?': {Dit, Dit, Da, Da, Dit, Dit}, '/': {Da, Dit, Dit, Da, Dit}, '\'': {Dit, Da, Da, Da, Da, Dit}, '"': {Dit, Da, Dit, Dit, Da, Dit}, '(': {Da, Dit, Da, Da, Dit}, ')': {Da, Dit, Da, Da, Dit, Da}, '_': {Dit, Dit, Da, Da, Dit, Da}, '@': {Dit, Da, Da, Dit, Da, Dit}, '[': {Da, Dit, Da, Dit, Da}, ']': {Dit, Dit, Dit, Da, Dit, Da}, '%': {Dit, Dit, Dit, Da, Dit}, '~': {Dit, Da, Dit, Dit, Dit}, '§': {Dit, Dit, Dit, Dit, Dit, Dit, Dit, Dit}, }
Code contains the morse code table.
var ErrWriteAborted = errors.New("cw: write aborted")
Functions ¶
func BPMToSeconds ¶
BPMToSeconds returns the duration of a dit in seconds with the given speed in BpM.
func FarnsworthWPMToSeconds ¶
FarnsworthWPMToSeconds returns the duration of a dit unit in seconds for farnsworth timing. see https://morsecode.world/international/timing.html
func Send ¶
Send reads CW symbols from the given stream and transmits them using the given setKeyDown function with the given speed in WpM.
func WPMToFarnsworthDit ¶
WPMToFarnsworthDit returns the duration of a dit unit for farnsworth timing. see https://morsecode.world/international/timing.html
func WPMToSeconds ¶
WPMToSeconds returns the duration of a dit in seconds with the given speed in WpM.
func WriteToSymbolStream ¶
WriteToSymbolStream writes the content of the given text as morse symbols to the given stream. The first written symbol is always a Dit or a Da (key down), the last written symbol is always a WordBreak (key up).
Types ¶
type Modulator ¶
type Modulator struct {
// contains filtered or unexported fields
}
func NewModulator ¶
func (*Modulator) AbortWhenDone ¶
func (m *Modulator) AbortWhenDone(done <-chan struct{})
func (*Modulator) ClearFarnsworth ¶
func (m *Modulator) ClearFarnsworth()