n0nb / winkeydaemon Goto Github PK
View Code? Open in Web Editor NEWMorse Code daemon for the Winkey hardware keyer module
Home Page: https://github.com/N0NB/winkeydaemon/wiki
License: GNU General Public License v2.0
Morse Code daemon for the Winkey hardware keyer module
Home Page: https://github.com/N0NB/winkeydaemon/wiki
License: GNU General Public License v2.0
winkeydaemon - Morse daemon for the winkey hardware keyer module winkeydaemon is a driver for the winkey2 and winkey3 keyers, it will also work with the K1EL compatible Ham Gadgets Master Keyer 1 (MK1). It provides an interface which is compatible to the cwdaemon, which means it can be used instead of the cwdaemon for programs such as Tlf. The winkeydaemon listens to a udp socket and outputs commands to the k1el keyer on a serial port. This archive is an effort by Nate Bargmann to colate the changes made by Rein, Joop, and Wilbert over the years and make them public. Fixes and updates will be welcome.
I tried to use winkeydaemon with a WK clone and had severe issues due to limited UDP read length and overflowing WK's serial buffer.
I'm not sure what the state of this code is, but the implementation of the internal buffering is clearly wrong. Example: it sends 30 chars right away and the looks for an echo and as soon as echo is received the rest of the buffer is sent: (around line 431, whole $string is sent then len($echo)<=9)
if (length($echo) > 9) {
...
} else {
my $out = $string;
$count = $port->write($out);
}
As the string from UDP req can be quite long this results in buffer overflow in WK.
Also the UDP read limit (32 chars, line 250) is way too low, a longer CQ call won't fit.
WK status evaluation is also flawed as it is done in an if/elsif/elsif/.. construct, so the first bit masks
the subsequent ones.
I've checked in an improved and actually working version to my fork and I'm happy to send a PR.
Instead of looking for echoed chars my code leverages the XOFF status bit sent by WK. Data are sent in a rate-limited way (instead of pouring 30 chars a time) to ensure that XOFF can be acted upon in time. UDP reading has been also refactored to use a more fine granular select() instead of alarm. UDP and serial timeouts add up to 15 ms, that gives a byte rate of ~60 cps. As the round trip time on serial IF at 1200 baud is ~20 ms this gives a reasonable accuracy for XOFF handling without lowering too much the data rate.
Zoli, ha5cqz
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.