/
k3ng_keyer.ino
22728 lines (19140 loc) · 839 KB
/
k3ng_keyer.ino
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/*
K3NG Arduino CW Keyer
Copyright 2010 - 2020 Anthony Good, K3NG
All trademarks referred to in source code and documentation are copyright their respective owners.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
If you offer a hardware kit using this software, show your appreciation by sending the author a complimentary kit or a bottle of bourbon ;-)
Full documentation can be found at https://github.com/k3ng/k3ng_cw_keyer/wiki . Please read it before requesting help.
For help, please post on the Radio Artisan group: https://groups.io/g/radioartisan . Please do not email the developer directly for support. Thanks
YouTube Channel: https://www.youtube.com/channel/UC5o8UM1-heT5kJbwnJRkUYg
2020 Recipient of the Amateur Radio Software Award https://amateurradiosoftwareaward.github.io/
Wordsworth CW training method created by George Allison, K1IG
English code training word lists from gen_cw_words.pl by Andy Stewart, KB1OIQ
Command Line Interface ("CLI") (USB Port) (Note: turn on carriage return if using Arduino Serial Monitor program)
CW Keyboard: type what you want the keyer to send (all commands are preceded with a backslash ( \ )
\? Help (requires FEATURE_SERIAL_HELP)
\/ Paged Help (requires FEATURE_SERIAL_HELP)
\# Play memory # (requires FEATURES_MEMORIES; play memories 1 - 10 (0 = memory 10) )
\a Iambic A mode
\b Iambic B mode
\c Single Paddle mode
\d Ultimatic mode (if OPTION_NO_ULTIMATIC not set)
\e#### Set serial number to ####
\f#### Set sidetone frequency to #### hertz
\g Bug mode
\h Toggle between CW and Hell sending (requires FEATURE_HELL)
\i Transmit enable/disable
\j### Dah to dit ratio (300 = 3.00, do \j alone to set to default)
\k CW Training Module (requires FEATURE_TRAINING_COMMAND_LINE_INTERFACE)
\l## Set weighting (50 = normal, do \l alone to set to default)
\m### Set Farnsworth speed
\n Toggle paddle reverse
\o Toggle sidetone on/off
\p#(#) Program memory #
\q## Switch to QRSS mode, dit length ## seconds
\r Switch to regular speed mode
\s Status
\t Tune mode
\u Manual PTT toggle
\v Toggle potentiometer active / inactive (requires FEATURE_POTENTIOMETER)
\w### Set speed in WPM
\x# Switch to transmitter #
\y# Change wordspace to # elements (# = 1 to 9)
\z Autospace on/off
\+ Create prosign
\!## Repeat play memory
\|#### Set memory repeat (milliseconds) (backslash and pipe)
\* Toggle paddle echo
\` Toggle straight key echo
\^ Toggle wait for carriage return to send CW / send CW immediately
\& Toggle CMOS Super Keyer Timing on/off
\%## Set CMOS Super Keyer Timing %
\. Toggle dit buffer on/off
\- Toggle dah buffer on/off
\~ Reset unit
\; Toggle cw send echo
\{ QLF mode on/off
\> Send serial number, then increment
\< Send current serial number
\( Send current serial number in cut numbers
\) Send serial number with cut numbers, then increment
\[ Set Quiet Paddle Interruption
\= Toggle American Morse mode (requires FEATURE_AMERICAN_MORSE)
\@ Mill Mode
\}#### Set potentiometer range - low ## / high ##
\" Hold PTT active with buffered characters
\] PTT Enable / Disable
\_ Beacon Mode at Boot Up Enable / Disable (requires FEATURE_BEACON_SETTING)
\; CW Send Inhibit Enable / Disable
\\ Immediately clear the buffer, stop memory sending, etc.
\: Extended CLLI commands
eepromdump - do a byte dump of EEPROM for troubleshooting
saveeeprom <filename> - store EEPROM in a file
loadeeprom <filename> - load into EEPROM from a file
printlog - print the SD card log
clearlog - clear the SD card log
ls <directory> - list files in SD card directory
cat <filename> - print filename on SD card
pl <transmitter> <mS> - Set PTT lead time
pt <transmitter> <mS> - Set PTT tail time
af ### - Set autospace timing factor; 100 = 1.00
pf ### - Set paddle echo timing factor; 100 = 1.00
Buttons
button 0: command mode / command mode exit
button 0 + left paddle: increase cw speed
button 0 + right paddle: decrease cw speed
button 1 - 12 hold + left paddle: repeat memory
button 1 - 6 half second hold: switch to TX # 1 - 6
Command Mode (press button0 to enter command mode and press again to exit)
A Switch to Iambic A mode
B Switch to Iambic B mode
C Switch to Single Paddle Mode
D Switch to Ultimatic mode (if OPTION_NO_ULTIMATIC not set)
E Announce speed
F Adjust sidetone frequency
G Switch to bug mode
H Set weighting and dah to dit ratio to defaults
I TX enable / disable
J Dah to dit ratio adjust
K Toggle Dit and Dah Buffers on and off (Ultimatic Mode) (if OPTION_NO_ULTIMATIC is not set)
L Adjust weighting
M Change command mode speed
N Toggle paddle reverse
O Toggle sidetone on / off
P#(#) Program a memory
Q Adjust keying compensation (left paddle = increase, right paddle = decrease)
R#### Set serial number to ####
S Alphabet code practice (FEATURE_ALPHABET_SEND_PRACTICE)
T Tune mode
U Receive / Send Echo Practice
V Toggle potentiometer active / inactive
W Change speed
X Exit command mode (you can also press the command button (button0) to exit)
Y#### Change memory repeat delay to #### mS
Z Autospace On/Off
# Play a memory without transmitting
= Enable / disable PTT Line (-...-)
? Status
1. Speed in WPM
2. Keyer Mode (A = Iambic A, B = Iambic B, G = Bug, S = Single Paddle, U = Ultimatic)
3. Weighting
4. Dah to Dit Ratio
Memory Macros
\# Jump to memory #
\c Play serial number with cut numbers, then increment
\d### Delay for ### seconds
\e Play serial number, then increment
\f#### Change sidetone to #### hertz (must be four digits - use leading zero below 1000 hz)
\h Switch to Hell sending
\i# Insert memory number
\l Switch to CW (from Hell mode)
\n Decrement serial number, do not send
\q## Switch to QRSS mode, dit length ## seconds
\r Switch to regular speed mode
\s Insert space
\t### Transmit for ### seconds (must be three digits, use leading zeros if necessary)
\u Activate PTT
\v Deactivate PTT
\w### Set regular mode speed to ### WPM (must be three digits, use leading zeros if necessary)
\x# Switch to transmitter # (1, 2, or 3)
\y# Increase speed # WPM
\z# Decrease speed # WPM
\+ Prosign the next two characters
PS2 / USB Keyboard
CTRL-A Iambic A
CTRL-B Iambic B
CTRL-C Single Paddle
CTRL-D Ultimatic (if OPTION_NO_ULTIMATIC not set)
CTRL-E Set Serial Number
CTRL-G Bug
CTRL-H Toggle Hell Mode On/Off (requires FEATURE_HELL)
CTRL-I TX enable / disable
CTRL-M Set Farnsworth Speed (0 = disabled) (requires FEATURE_FARNSWORTH)
CTRL-N Paddle Reverse
CTRL-O Toggle Sidetone On/Off
CTRL-S CMOS Superkeyer Timing On/Off
CTRL-T Tune
CTRL-U Manual PTT Toggle
CTRL-W Set WPM
CTRL-F1 Switch to TX #1
CTRL-F2 Switch to TX #2
CTRL-F3 Switch to TX #3
CTRL-F4 Switch to TX #4
CTRL-F5 Switch to TX #5
CTRL-F6 Switch to TX #6
END Send serial number no increment
ESC Stop sending and clear buffer
F1, F2, F3.. Play memory 1, 2, 3...
DOWN ARROW Decrease WPM
HOME Reset timing settings
INSERT Send serial number and increment
LEFT ARROW Decrease Dah to Dit Ratio
PGDN Decrease Sidetone Frequency
PGUP Increase Sidetone Frequency
RIGHT ARROW Increase Dah to Dit Ratio
SCROLL LOCK Prosign Next Two Characters
SHIFT-BACKSPACE Decrement serial number
SHIFT-F1, F2... Program Memory 1, 2...
ALT-F1, F2... Repeat Memory 1, 2...
TAB Pause Sending Immediately
UP ARROW Increase WPM
Keypad / Dit Paddle (USB Keyboard Only)
Keypad * Dah Paddle (USB Keyboard Only)
Keypad ENTER Tune / Straight Key (USB Keyboard Only)
USB Mouse
Left Button Dit
Right Button Dah
Middle Button Tune / Straight Key
PS2 Keyboard Notes (FEATURE_PS2_KEYBOARD)
To use FEATURE_PS2_KEYBOARD you need the K3NG_PS2Keyboard.h and K3NG_PS2Keyboard.cpp library files from https://github.com/k3ng/k3ng_cw_keyer/tree/master/libraries
Some keyboards may require a reset sequence upon startup. This is activated with OPTION_PS2_KEYBOARD_RESET.
USB Keyboard Notes (FEATURE_USB_KEYBOARD)
To use a USB keyboard you need to download and install this library: https://github.com/felis/USB_Host_Shield_2.0 . You may use an Arduino Mega
ADK board (which has a built in USB host interface, get or Circuits@Home USB shield (http://www.circuitsathome.com/products-page/arduino-shields/usb-host-shield-2-0-for-arduino),
or built your own MAX3421 based USB port.
If you are using an Arduino Mega ADK with Arduino IDE older than version 1.5.5, you must customize the USB Host Shield Library settings.h file!
If you are using Arduino IDE older than version 1.5.5 and you experience a compiler error, you may need to add these lines to your keyer.h file:
#define HID_PROTOCOL_KEYBOARD 1
#define HID_PROTOCOL_MOUSE 2
(Thanks Raimo, DL1HTB, for the two notes above.)
Option Usb Computer Keyboard Emulation FEATURE_CW_COMPUTER_KEYBOARD
(Arduino Due, Leonardo only)
You can use your cw key as a computer keyboard. Your computer recognize the K3NG keyer as a normal keyboard.
Language available English and Italian (more languages to add)
Use following prosign to emulate Enter Key, Caps Lock, space and backspace:
Prosign AA "Enter"
Prosign DO "Caps Lock" (enable and disable)
"......" or more "Backspace"
"------" or more "Space"
SIDETONE_SWITCH
Enabling this feature and an external toggle switch adds switch control for playing cw sidetone.
ST Switch status is displayed in the status command. This feature will override the software control of the sidetone (\o).
Useful Stuff
Reset to defaults: squeeze both paddles at power up (good to use if you dorked up the speed and don't have the CLI)
Press the right paddle to enter straight key mode at power up
Press the left paddle at power up to enter and stay forever in beacon mode
Recent Update History
2.2.2015040402 More work on ARDUINO_SAM_DUE (documented)
2.2.2015040501 Fixed bug with O command not working when any display feature was compiled in
2.2.2015040801 FEATURE_EEPROM_E24C1024; working on FEATURE_CW_COMPUTER_KEYBOARD (documented)
2.2.2015040901 updated serial help text with recently added commands, consolidated the three paddle echo features into one subroutine
2.2.2015040902 Minor typos fixed
2.2.2015042002 Eliminated keyer.h declaration (upgrade Stino if you're still using keyer.h)
2.2.2015042301
'#define PRIMARY_SERIAL_PORT &Serial' is now '#define PRIMARY_SERIAL_PORT &Serial' (documented on website 2015-04-25)
OPTION_SERIAL_PORT_DEFAULT_WINKEY_EMULATION is now OPTION_PRIMARY_SERIAL_PORT_DEFAULT_WINKEY_EMULATION (documented on website 2015-04-25)
'#define default_serial_baud_rate 115200' is now '#define PRIMARY_SERIAL_PORT_BAUD 115200' (documented on website 2015-04-25)
#define SECONDARY_SERIAL_PORT_BAUD 115200 (documented on website 2015-04-25)
FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT (documented on website 2015-04-25)
FEATURE_LCD1602_N07DH (Thanks Xigco for code!) (documented on website 2015-04-25)
2.2.2015042302
OPTION_CW_KEYBOARD_ITALIAN (Thanks Giorgio IZ2XBZ) (documented on website 2015-04-25)
FEATURE_CW_COMPUTER_KEYBOARD repeating backspace, fixed caps lock sounds
2.2.2015042303
Test of GitHub - no changes
2.2.2015042501
FEATURE_CW_COMPUTER_KEYBOARD update from Giorgio IZ2XBZ
Website documentation up to date! Yeahhhhhh! :-)
2.2.2015042901
HARDWARE_NANOKEYER_REV_D
2.2.2015043001
Fixed compilation bug with FEATURE_COMMAND_LINE_INTERFACE when FEATURE_WINKEY_EMULATION not enabled
2.2.2015051201
OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR (website updated 2015-05-12)
2.2.2015051301
Improvements to FEATURE_CW_DECODER for better decoding and Goetzel settings for Arduino Due
2.2.2015061101
lcd_columns and lcd_rows in keyer_settings*.h files renamed to LCD_COLUMNS and LCD_ROWS
OPTION_INVERT_PADDLE_PIN_LOGIC - paddle closed = HIGH, paddle open = LOW
2.2.2015082801
Added E24C1024.h and E24C1024.cpp to git
Fixed compilation issue with Due involving E24C1024 library
2.2.2015082802
FEATURE_STRAIGHT_KEY {documented on web page 2015-09-05}
2.2.2015090501
Memories can now be programmed in commmand mode (FEATURE_BUTTONS) by pressing the memory button
FEATURE_CW_DECODER now has digital input pin (cw_decoder_pin) and if OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR is enable, cw_decoder_audio_input_pin will work in parallel
2.2.2015090801
Fixed issue with FEATURE_CW_DECODER + OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR and wrong GOERTZ_SAMPLING_FREQ and GOERTZ_SAMPLES used in goertzel.h causing keyer lockups after startup
2.2.2015091301
FEATURE_DYNAMIC_DAH_TO_DIT_RATIO (code contributed by Giorgio, IZ2XBZ)
#ifdef FEATURE_DYNAMIC_DAH_TO_DIT_RATIO (keyer_settings.h)
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_WPM 30
#define DYNAMIC_DAH_TO_DIT_RATIO_LOWER_LIMIT_RATIO 300 // 300 = 3:1 ratio
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_WPM 70
#define DYNAMIC_DAH_TO_DIT_RATIO_UPPER_LIMIT_RATIO 240 // 240 = 2.4:1 ratio
#endif //FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
2.2.2015091302
FEATURE_COMPETITION_COMPRESSION_DETECTION - Experimental
Fixed compiler error when only FEATURE_BUTTONS was enabled
2.2.2015091801
OPTION_DIT_DAH_BUFFERS_OFF_BY_DEFAULT_FOR_FEATURE_DIT_DAH_BUFFER_CONTROL
OPTION_ADVANCED_SPEED_DISPLAY (code contributed by Giorgio, IZ2XBZ)
2.2.2015091802
Improved handling of spaces in LCD display
2.2.2015092101
Fixed bugs in OPTION_CW_KEYBOARD_ITALIAN and OPTION_UNKNOWN_CHARACTER_ERROR_TONE (courtesy of Giorgio, IZ2XBZ)
2.2.2015092301
FEATURE_COMPETITION_COMPRESSION_DETECTION improvements
2.2.2015092401
#define compression_detection_pin 0
default potentiometer_change_threshold changed to 0.9
2.2.2015101201
Additional DEBUG_PS2_KEYBOARD code
2.2.2015101301
OPTION_STRAIGHT_KEY_ECHO
2.2.2015101302
OPTION_STRAIGHT_KEY_ECHO is now FEATURE_STRAIGHT_KEY_ECHO
CLI command: \` Toggle straight key echo
#define cli_paddle_echo_on_at_boot 1
#define cli_straight_key_echo_on_at_boot 1
FEATURE_STRAIGHT_KEY now works with FEATURE_CW_COMPUTER_KEYBOARD
Straight Key can now program memories
2.2.2015101401
Fixed compile bug with FEATURE_DISPLAY and cli_straight_key_echo
2.2.2015101402
K3NG_PS2Keyboard Library: Fixed issues with CTRL and ALT key combinations with German and French keyboards
2.2.2015101801
OPTION_WINKEY_IGNORE_LOWERCASE
2.2.2015111501
Fixed storage of KN prosign in memory (Thank Stefan, DL1SMF)
2.2.2015120401
Fixed compiler warning: large integer implicitly truncated to unsigned type - jump_back_to_y = 99999;
2.2.2015121901
OPTION_PROSIGN_SUPPORT - additional prosign support for memory storage
2.2.2015122001
OPTION_PROSIGN_SUPPORT - updated; forgot to add functionality to paddle echo
2.2.2015122801
void send_the_dits_and_dahs(char * cw_to_send) compile warning fix
2.2.2016010301
Fixed compiler error when OPTION_SAVE_MEMORY_NANOKEYER and FEATURE_COMMAND_LINE_INTERFACE are enabled (Thanks, Gerd, DD4DA)
void play_memory (byte memory_number) near line 10049 - static String serial_number_string - removed static declration to fix compiler warning (Thanks, Gerd, DD4DA)
2.2.2016010302
Winkey emulation pin config bug fix (Thanks, Gerd, DD4DA)
2.2.2016011801
New and improved FEATURE_SLEEP code contributed by Graeme, ZL2APV
2.2.2016012001
Fixed compile error involving serial_number, FEATURE_PS2_KEYBOARD, and HARDWARE_NANOKEYER_REV_D (Thanks, Kari, OH6FSG)
2.2.2016012002
HARDWARE_TEST
Enhanced FEATURE_SLEEP to have pin that indicates sleep state: define keyer_awake 0 ; KEYER_AWAKE_PIN_AWAKE_STATE, KEYER_AWAKE_PIN_ASLEEP_STATE
2.2.2016012003
Fixed compiler warning for void play_memory() and returns; (Thanks, Gerd, DD4DA)
2.2.2016012004
Modified includes so library files can be put in \libraries\ folder rather than ino directory so Arduino 1.6.7 works (thanks Giorgio, IZ2XBZ))
2.2.2016012101
Beta testing FEATURE_INTERRUPT_PADDLE_READS
2.2.2016012301
Fixed compilation error: 10306: error: return-statement with no value, in function returning byte (thanks Giorgio, IZ2XBZ))
2.2.2016012302
Merge of bug fix from JG2RZF: Winkey - CTESTWIN sends 0x00 as "HSCW Speed Change" to keyer (thanks JG2RZF)
2.2.2016012501
loop_element_lengths - minor change to paddle reading that may have an effect at high speeds
2.2.2016012502
tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state settings
OPTION_RUSSIAN_LANGUAGE_SEND_CLI contributed by Павел Бирюков, UA1AQC
2.2.2016012601
Winkey emulation support for 0x1D HSCW overloaded command to switch transmitters (thanks JG2RZF)
Moved stuff from keyer_settings*.h to keyer.h (no need to tweak these or have different entries for different hardware)
2.2.2016012801
Fixed issue with goertzel.h being required for compilation even when it wasn't needed
2.2.2016012901
Removed experimental feature
2.2.2016012902
FEATURE_LCD_ADAFRUIT_BACKPACK - support for Adafruit I2C LCD Backup using MCP23008 (courtesy Josiah Ritchie, KE0BLL)
2.2.2016020801
PROSIGN_HH (courtesy of Vincenzo, IZ0RUS)
2.2.2016020802
OPTION_DO_NOT_SEND_UNKNOWN_CHAR_QUESTION
2.2.2016030501
FEATURE_LCD_SAINSMART_I2C
2.2.2016030701
Fixed FEATURE_LCD_SAINSMART_I2C initialization
2.2.2016030801
Fixed FEATURE_LCD_SAINSMART_I2C again
2.2.2016031801
Ethernet, web server and Internet linking functionality in beta / development (DEFINEs are in HARDWARE_TEST files only right now)
#define FEATURE_WEB_SERVER
#define FEATURE_INTERNET_LINK
#define OPTION_INTERNET_LINK_NO_UDP_SVC_DURING_KEY_DOWN
#define FEATURE_ETHERNET_IP {192,168,1,179} // default IP address
#define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xEE}
#define FEATURE_ETHERNET_GATEWAY {192,168,1,1} // default gateway
#define FEATURE_ETHERNET_SUBNET_MASK {255,255,255,0} // default subnet mask
#define FEATURE_ETHERNET_WEB_LISTENER_PORT 80
#define FEATURE_UDP_SEND_BUFFER_SIZE 128
#define FEATURE_UDP_RECEIVE_BUFFER_SIZE 128
#define FEATURE_INTERNET_LINK_MAX_LINKS 2
#define FEATURE_INTERNET_LINK_DEFAULT_RCV_UDP_PORT 8888
#define FEATURE_INTERNET_LINK_BUFFER_TIME_MS 500
2.2.2016040501
Fixed bug with OPTION_DO_NOT_SEND_UNKNOWN_CHAR_QUESTION and ? character not being sent with keyboard and Winkey operation
Still working on web server functionality
2.2.2016042601
More web server functionality work
#define FEATURE_INTERNET_LINK_KEY_DOWN_TIMEOUT_SECS 8
\P command now can program memories above #10
2.2.2016053001
Additional DEBUG_WINKEY messages for Winkeyer troubleshooting
#define WINKEY_DEFAULT_BAUD 1200 (added setting for UCXLog 9600 baud Winkey setting)
Fixed minor Winkey emulation bug with recognizing byte 0x7C as a half dit space when OPTION_WINKEY_IGNORE_LOWERCASE is enabled
2.2.2016062101
New CLI commands:
\> Send serial number, then increment
\< Send current serial number
\( Send current serial number in cut numbers
\) Send serial number with cut numbers, then increment
2.2.2016070701
Corrected Nanokeyer Rev B and Rev D configurations
2.2.2016070702
Setting for speed potentiometer check interval: #define potentiometer_check_interval_ms 150
2.2.2016071001
OPTION_WINKEY_UCXLOG_9600_BAUD for UCXLog 9600 baud support (I can't get UCXlog to work at 1200 baud)
2.2.2016071801
Now have FEATURE_AUTOSPACE and FEATURE_DEAD_OP_WATCHDOG disabled by default for HARDWARE_NANOKEYER_REV_D
2.2.2016071802
FEATURE_CAPACITIVE_PADDLE_PINS: capactive_paddle_pin_inhibit_pin
2.2.2016072301
Added dependency check for FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT
More Winkey emulation debugging; working on strange issues with UcxLog interoperability. UcxLog working with normal 1200 baud mode today. Hmmm.
2.2.2016080101
Troubleshooting some UCXLog Winkey weirdness some users are experiencing. Created OPTION_WINKEY_UCXLOG_SUPRESS_C4_STATUS_BYTE
2.2.2016080301
Disabled echoing of 7C (half space character) byte in Winkey emulation
2.2.2016080601
More messing around with UCXlog...
OPTION_WINKEY_DO_NOT_ECHO_7C_BYTE // Might need for UCXlog? (7C = half space character)
OPTION_WINKEY_DO_NOT_SEND_7C_BYTE_HALF_SPACE
2.2.2016081201
OPTION_WINKEY_DO_NOT_ECHO_7C_BYTE is changed to OPTION_WINKEY_ECHO_7C_BYTE and only in the test feature and options file for testing/debugging purposes
OPTION_WINKEY_DO_NOT_SEND_7C_BYTE_HALF_SPACE - not placing this into production. this was to troubleshoot issues with UCXLog
2.2.2016081601
Updated paddle echo to work with bug mode
2.2.2016090701
More efficient code suggestion from Paul, K1XM, implemented in loop_element_lengths()
2.2.2016090801
Removed legacy option: OPTION_USE_ORIGINAL_VERSION_2_1_PS2KEYBOARD_LIB
2.2.2016090802
Corrected error in FEATURE_ROTARY_ENCODER ttable (thanks, frye.dale)
2.2.2016091401
More frequent PTT line tail time checking
2.2.2016091602
Reversing munged GitHub merge
2.2.2016091901
Manual merge of toyo pull request #22
It is no longer necessary to specify HARDWARE_ARDUINO_DUE in keyer_hardware.h. It is automatically detected now.
2.2.2016092701
Command Mode: command L - adjust weighting
2.2.2016092702
Winkey Emulation - changed paddle interrupt behavior to send 0xC2 and then 0xC0 rather than just 0xC0
2.2.2016092801
Winkey Emulation - changed paddle interrupt behavior to send 0xC6,0xC0 rather than 0x64,0xC0
2.2.2016092802
Fixed issue with configuration in eeprom colliding with memory 0 (1) (Thanks, Ivan, IX1FJG)
2.2.2016092803
Winkey Emulation - changed paddle interrupt behavior to also clear send buffer
2.2.2016092901
Improved opposite paddle dit/dah insertion in Ultimatic mode
2.2.2016100601
Improved paddle break in for memory playing and Winkey interruption
Fixed various compile bugs that have crept into the code
2.2.2016102401
Updated \J (dah to dit ratio) and \L (weighting) CLI commands so that without arguments they set the parameters to defaults
2.2.2016102801
Single Paddle mode, C command
2.2.2016103101
Quiet Paddle Interruption feature - set with \[ command in CLI. Value is 0 to 20 element lengths; 0 = off
2.2.2016110801
Integrated OK1RR Tiny Keyer hardware files - HARDWARE_TINYKEYER in keyer_hardware.h file
2.2.2016110802
New command mode command H - set weighting and dah to dit ratio to defaults
New command mode command ? - Status
2.2.2016111701
FEATURE_CW_COMPUTER_KEYBOARD enhancements from Giorgio IZ2XBZ
2.2.2016111702
Eliminated FEATURE_DIT_DAH_BUFFER_CONTROL code; it's compiled in with core code now. Also depricated OPTION_DIT_DAH_BUFFERS_OFF_BY_DEFAULT_FOR_FEATURE_DIT_DAH_BUFFER_CONTROL
2.2.2016112301
New command mode command K: toggle dit and dah buffer on and off
2.2.2016112302
Updated keyer_hardware.h to accomodate Leonardo, Yun, Esplora, and other boards to compile with Serial related functionality.
2.2.2016112401
Updated dit and dah buffer control to change automatically with Iambic A & B and Ultimatic
2.2.2016112501
Code comment update
2.2.2016112502
Merged in GitHub pull request 24 https://github.com/k3ng/k3ng_cw_keyer/pull/24 from Giorgio IZ2XBZ
2.2.2016112701
Improved performance when sending large macros from logging and contest programs using Winkey emulation. Thanks, Martin OK1RR for discovery and testing
2.2.2016112702
Updated command mode K command to work only when in Ultimatic mode
2.2.2016112901
Fixed bug with command mode status command reporting wrong keyer mode. Also fixed CLI status query reporting wrong keyer mode while in command mode
2.2.2016120101
Compilation of serial related functionality for TEENSYDUINO
2.2.2016120102
Comilation issue fix for ARDUINO_MAPLE_MINI. Thanks, Edgar, KC2UEZ
2.2.2016120401
Added keyer_stm32duino.h with function declarations to make ARDUINO_MAPLE_MINI compilation work. Thanks, Edgar, KC2UEZ
2.2.2016120901
Merged pull request STM32duino compatibilty 30. Thanks, Edgar, KC2UEZ
2.2.2016120902
Fixed bug in command mode when OPTION_WATCHDOG_TIMER is enabled. Thanks, disneysw.
2.2.2016121001
Support for FUNtronics FK-10 contributed by disneysw. HARDWARE_FK_10 in keyer_hardware.h; files: keyer_pin_settings_fk_10.h, keyer_features_and_options_fk_10.h, keyer_settings_fk_10.h
2.2.2016121201
Additional work on web interface
2.2.2016121202
Additional work on web interface
Mainstreamed FEATURE_HI_PRECISION_LOOP_TIMING code. No longer an option. (Need to clean out of keyer_feature_and_options files)
2.2.2017010301
FEATURE_AMERICAN_MORSE - American Morse Code sending mode. \= command in the CLI switches to American Morse Code https://en.wikipedia.org/wiki/American_Morse_code
2.2.2017011701
FEATURE_LCD1602_N07DH - added include for Wire.h (Thanks, Hjalmar, OZ1JHM)
2.2.2017011702
Pull request 32 https://github.com/k3ng/k3ng_cw_keyer/pull/32 merged which adds FEATURE_SIDETONE_SWITCH. Also fixed up additional features and pins files. (Thanks, dfannin)
2.2.2017011703
Added OPTION_CW_KEYBOARD_GERMAN (Thanks, Raimo, DL1HTB)
2.2.2017012101
New command mode command R: set serial number
2.2.2017020701
WD9DMP contributed fixes and changes
Reconciled CLI Command/Memory Macro Help code with front comments and actual code so all commands now display with /?
Removed unimplemented Memory Macros from CLI Help
Updated descriptions of CLI Command/Memory Macro functions in help display (some missing serial number lack increment description where present in code)
Fixed issue where the TX ON/TX Off LCD display state in Command Mode could get out of sync with the actual key_tx state
Fixed serial numbers not displaying in LCD and CLI when playing back from Macro or CLI command (please check conditional compilations)
Fixed capialization in HELP display and Status output to be consistent
Changed "$" at end of non-empty memory contents in CLI status display to "_" to help determine if a trailing space is present.
2.2.2017020702
Fixed typo
2.2.2017021001
Fixed typo - 'include <Keyboard.h>' was commented out (thanks Raimo, DL1HTB)
2017.02.12.01
WD9DMP contributed addition fixes
Changed version number scheme. The 2.2 really isn't significant anymore.
2017.02.12.02
loop_element_lengths sending_mode code error fixed. (Thanks, WD9DMP)
2017.02.16.01
Added note: Have a problem with Keyboard.h not found? See https://github.com/k3ng/k3ng_cw_keyer/issues/35
2017.03.12.01
WD9DMP contribution: Added checks to see that keyer is NOT in command mode before allowing keyboards or CLI to toggle key_tx flag state, otherwise key commands could key transmitter
Added library.properties file to K3NG_PS2Keyboard library to support the Arduino IDE eye candy bloatware Library Manager
2017.03.12.02
Added CTRL-S keystroke to toggle CMOS Superkeyer Timing on and off in FEATURE_PS2_KEYBOARD and FEATURE_USB_KEYBOARD
2017.03.22.01
Commented out include <Keyboard.h> due to unexplained compilation error in Arduino 1.8.1
2017.03.30.01
FEATURE_4x4_KEYPAD and FEATURE_3x4_KEYPAD code contributed by Jack, W0XR
2017.04.19.01
Minor change in keyer.h to prevent errors with some versions of Arduino IDE when compiling USB HID features
2017.04.19.02
OPTION_CMOS_SUPER_KEYER_IAMBIC_B_TIMING_ON_BY_DEFAULT and two code fixes contributed by Raimo, DL1HTB, thanks!
2017.04.22.01
Webserver About screen now handles millis() uptime rollover
Bug fix in loop_element_lengths and Internet Linking functionality UDP packet handling
2017.04.27.01
Added bounds checking for void speed_set()
2017.05.03.01
FEATURE_TRAINING_COMMAND_LINE_INTERFACE
First release of Wordsworth training functionality
2017.05.05.01
keyer_training_text_czech.h contributed by Martin, OK1RR
Czech language support for Wordsworth training: OPTION_WORDSWORTH_CZECH
2017.05.06.01
Lots of new functionality in FEATURE_TRAINING_COMMAND_LINE_INTERFACE
keyer_training_text_norsk.h content contributed by Karl, LA3FY
Norwegian language support for Wordsworth training: OPTION_WORDSWORTH_NORSK
2017.05.09.01
FEATURE_TRAINING_COMMAND_LINE_INTERFACE - fixed issue with carriage returns and line feeds causing menus to reprint
2017.05.09.02
Updated FEATURE_4x4_KEYPAD and FEATURE_3x4_KEYPAD to allow memory stacking
2017.05.12.01
Fixed bug with \< and \> commands and carriage returns, and now handle serial number sending through the send buffer rather than direct sending
Fixed issue with non-English characters in Wordsworth by implementing OPTION_NON_ENGLISH_EXTENSIONS within Wordsworth
2017.05.12.02
Added DEBUG_MEMORY_LOCATIONS
2017.05.13.01
Improved reading of serial receive buffer in serial_program_memory to facilitate programming of large memories. Related parameter: serial_program_memory_buffer_size
2017.05.13.02
Added random code group practice
2017.05.14.01
Optimization of serial_program_memory()
2017.06.03.01
Fixed a bug I introduced back in version 2017.05.12.01 or so with memory serial number macros not playing in right sequence (Thanks, Fred, VK2EFL)
2017.06.03.02
Added OPTION_SIDETONE_DIGITAL_OUTPUT_NO_SQUARE_WAVE which changes the sidetone line to go high/low rather than output square wave, for driving an external audio amplifier
2017.06.14.02
Fixed command line interface bug with /> and /< commands and carriage returns
2017.06.28.01
Fixed bug with \T command when FEATURE_BUTTONS is not activated. (Thanks, Павел Бирюков)
2017.06.28.02
Keyer now reports rotary encoder speed changes in K1EL Winkey emulation (Thanks, Marc-Andre, VE2EVN)
2017.07.24.01
Fixed keypad asterisk and pound definitions (Thanks, Fred, VK2EFL)
2017.07.31.01
Fixed bug with memory macro \X not switching to transmitters 4, 5, or 6 (Thanks, Larry, DL6YY)
2018.01.05.01
When entering into program memory mode in command mode, a beep is now emitted rather than a dit
Implemented CLI Receive / Transmit Echo Practice (\K E)
2018.01.06.01
Enhancements to CLI CW Training module
2018.01.13.01
O command in command mode, keyboard input, and CLI enhanced to cycle through sidetone on / off / paddle only; code provided by Marc-Andre, VE2EVN
2018.01.13.02
Improvements to LCD display in practice modes; code provided by Fred, VK2EFL
Minor tweaks to handle LCD displays with lesser number of columns
Bug fixes involving practice modes and garbage left in paddle_echo_buffer
2018.01.14.01
Added \/ (backslash slash) CLI command for Paged Help
Added /@ CLI command for Mill Mode
ESC in CLI will now dump type ahead buffer and stop memory repeat, just like \\
Added /} CLI command to set potentiometer range
2018.01.25.01
Fixed bug in FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING
2018.01.28.01
Added carriage return and newline to the beginning of several CLI command responses
Add command mode command M - set command mode WPM (command mode now has a speed setting independent of regular keyer speed)
2018.01.29.01
Working on FEATURE_CLI_EXPERT_MENU and FEATURE_SD_CARD_SUPPORT
CLI status now shows speed potentiometer range
2018.02.01.01
Changed Toggle cw send echo CLI command from \: to \;
Deprecated FEATURE_CLI_EXPERT_MENU
Working on Extended CLI Commands /:
Added OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS
Extended CLI Commands
eepromdump
saveeeprom <filename>
loadeeprom <filename>
printlog
clearlog
ls <directory>
cat <filename>
Added serial support for ARDUINO_AVR_LEONARDO_ETH
2018.02.01.02
Fixed bug with dit_buffer_off and dah_buffer_off not being initialized from eeprom settings at boot up (Thanks, YU7MW)
2018.02.05.01
Typo fix: ifdef defined(__AVR__) (Thanks, Glen, N1XF https://github.com/k3ng/k3ng_cw_keyer/issues/19)
2018.02.05.02
Fixed https://github.com/k3ng/k3ng_cw_keyer/issues/40 (Thanks, Glen, N1XF)
2018.02.07.01
Added support for 8 column LCD displays
2018.02.25.01
FEATURE_SIDETONE_SWITCH switch line is now set for internal pullup so it won't cause a problem if left floating
2018.03.04.01
Changed wpm_command_mode from uint8_t to unsigned int
Fixed minor bug with junk left in paddle echo buffer after exiting command mode
2018.03.04.02
Added OPTION_DFROBOT_LCD_COMMAND_BUTTONS to use this board https://www.dfrobot.com/wiki/index.php/Arduino_LCD_KeyPad_Shield_(SKU:_DFR0009) with FEATURE_BUTTONS
2018.03.08.01
Additional OPTION_DFROBOT_LCD_COMMAND_BUTTONS code and corresponding DEBUG_BUTTONS code
2018.03.08.02
Added OPTION_EXCLUDE_MILL_MODE
2018.03.11.01
New feature! FEATURE_SEQUENCER Wiki: https://github.com/k3ng/k3ng_cw_keyer/wiki/383-Feature:-Sequencer
define sequencer_1_pin 0
define sequencer_2_pin 0
define sequencer_3_pin 0
define sequencer_4_pin 0
define sequencer_5_pin 0
define ptt_input_pin 0
define sequencer_pins_active_state HIGH
define sequencer_pins_inactive_state LOW
define ptt_line_active_state HIGH
define ptt_line_inactive_state LOW
define tx_key_line_active_state HIGH
define tx_key_line_inactive_state LOW
define ptt_input_pin_active_state LOW
define ptt_input_pin_inactive_state HIGH
New commands:
\:pl <tx_number> <time_in_mS> - set PTT lead time
\:pt <tx_number> <time_in_mS> - set PTT tail time
\:pa <sequencer_number> <time_in_mS> - PTT active to sequencer active time
\:pi <sequencer_number> <time_in_mS> - PTT inactive to sequencer inactive time
\:timing - show all current timing settings
PTT lead and tail times are now stored in EEPROM and setable at runtime with extended commands \:pl and \:pt
Additional documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/225-Sidetone,-PTT,-and-TX-Key-Lines
2018.03.14.01
FEATURE_LCD_FABO_PCF8574 - Added support for FaBo LCD https://github.com/FaBoPlatform/FaBoLCD-PCF8574-Library
2018.03.16.01
Fixed compile error involving lcd_string (Thanks, Jeff, N0MII)
2018.03.23.01
Bug with automatic sending interruption fixed (Thanks, Larry, F6FVY)
2018.03.23.02
Fixed compilation bug with FEATURE_PTT_INTERLOCK when FEATURE_WINKEY_EMULATION was disabled
2018.03.24.01
Support for ARDUINO_MAPLE_MINI contributed by Marcin SP5IOU
HARDWARE_MAPLE_MINI hardware profile in keyer_hardware.h
2018.03.29.01
Support for ARDUINO_GENERIC_STM32F103C (Blue pill boards) contributed by Marcin SP5IOU
HARDWARE_GENERIC_STM32F103C hardware profile in keyer_hardware.h
How to deal with those boards with Arduino: https://www.techshopbd.com/uploads/product_document/STM32bluepillarduinoguide(1).pdf
2018.03.30.01
tx_inhibit and tx_pause pins implemented for use with contest station interlock controllers. Documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/225-Sidetone,-PTT,-and-TX-Key-Lines#tx-inhibit-and-pause
2018.03.31.01
Now have OPTION_WINKEY_2_HOST_CLOSE_NO_SERIAL_PORT_RESET activated in feature files by default.
2018.04.07.01
Improved tx_pause when buffer or memory sending is paused mid-character
2018.04.15.01
Added HARDWARE_MORTTY
2018.04.16.01
Added OPTION_WINKEY_BLINK_PTT_ON_HOST_OPEN - visual cue that Winkey HOST OPEN has occurred
2018.04.20.01
FEATURE_WINKEY_EMULATION - Now clear manual ptt invoke upon host open, host close, and 0A commands
2018.04.22.01
Added OPTION_BLINK_HI_ON_PTT - on units that lack a sidetone speaker, this will blink HI on the PTT line on boot up
Fixed issue in keyer_pin_settings_mortty.h
Added TX Inhibit and TX Pause status in Command Line Interface Status \S command
2018.04.23.01
OPTION_KEEP_PTT_KEYED_WHEN_CHARS_BUFFERED - when Winkeyer Pause command is received, PTT is now de-asserted until Pause is cleared
2018.04.29.01
Deprecated OPTION_KEEP_PTT_KEYED_WHEN_CHARS_BUFFERED. Winkey PINCONFIG PTT bit now sets / unsets ptt_buffer_hold_active
New CLI command \" to activate/deactivate PTT Hold Active When Characters Buffered functionality
2018.05.04.01
Winkey Emulation - minor addition to filtering of values echoed from send_char()
2018.05.05.01
Winkey Emulation - minor bug fix with handling of PTT tail time setting. Also added support in Admin Get Values command to report PTT lead and tail time
2018.05.08.01
Fixed bug in CLI with multiple backspaces / backspaces exceeding number of characters in buffer locking up the keyer (Thanks, WF3T)
2018.05.10.01
Removed OPTION_N1MM_WINKEY_TAB_BUG_WORKAROUND. The bug appears to be gone when testing a recent version of N1MM+.
2018.05.17.01
Updated to better handle STM32 board compilation (Thanks, Marcin, SP5IOU)
2018.05.28.01
Addressed potential issue with random pauses when using Winkey emulation with Writelog and Wintest: Changed check_for_dirty_configuration so it won't write to eeprom when there are characters buffered or PTT is active. Also, Winkey Pinconfig command no longer sets config_dirty.
2018.05.31.01
Fixed design flaw with ptt_input_pin and manual PTT invoke commands not working independently (Thanks, Mek, SQ3RX)
2018.07.15.01
Added FEATURE_LCD_8BIT for controlling standard LCD displays with 8 data lines
2018.08.03.01
Fixed bug FEATURE_FARNSWORTH that was inadvertently introduced with command mode speed feature (Thanks, Jim, W5LA)
2018.08.04.01
Added additional checking of serial port while sending automatic CW in order to better interrupt character sending (Thanks, Max, NG7M)
Added OPTION_DISABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW to disable this additional checking if desired or for troubleshooting
2018.08.13.01
More accurate Farnsworth timing; code contributed by Jim, W5LA
2018.08.21.01
Merged pull request https://github.com/k3ng/k3ng_cw_keyer/pull/50
HARDWARE_YAACWK contributed by Federico Pietro Briata, IZ1GLG <federico@briata.org>
2018.08.21.02
Different Farnsworth timing calculation. Introduced farnsworth_timing_calibration in settings files.
2018.08.23.01
Fixed bug with Farnsworth timing not occurring during intercharacter time, however now overall WPM timing not right...
2018.08.25.01
More work on Farnsworth timing. The timing appears correct now with PARIS testing, however using farnsworth_timing_calibration = 0.35
Now allow /M0 command to disable Farnsworth
2018.08.30.01
Think we got Farnsworth timing right now. Thanks, Jim, W5LA !
2018.10.17.01
PTT lead and tail times, and sequencer times can now be set up to 65,535 mS
Updated help text with extended commands
2018.10.17.02
Fixed bug in K1EL Winkeyer Emulation paddle echo
2018.10.17.03
Improved potentiometer noise immunity, added potentiometer_reading_threshold in settings (Thanks, Wolf, DK7OB)
Fixed non-optimal potentiometer speed change comparison (Thanks, Wolf, DK7OB)
2018.10.19.01
Enabling OPTION_DISABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW by default. There appear to be lock ups caused by the serial port checking while sending functionality. Investigating.
2018.10.21.01
Fixed Funtronics FK-10 LCD pin definitions that were broken in 2018.07.15.01 (Thanks, Jeff, N0MII )
2018.11.09.01
Fixed bug with K1EL Winkey emulation with Admin Get Values PTT Hang Time value returned (Thanks, Dariusz, SP2MKI)
Improved reporting of K1EL Winkey emulation PTT tail time and also now have tail time change dynamically with WPM changes to better follow specification
Fixed bug in Beacon Mode where dit and dah paddle would interrupt beacon code
Fixed bug with K1EL Winkey emulation with dead op watchdog enabling / disabling, and reporting (Thanks, Dariusz, SP2MKI)
K1EL Winkey emulation PINCONFIG and Winkeyer Mode commands now write to eeprom