2013-08-29 01:35:16 +00:00
// compile time features and options - comment or uncomment to add or delete features
// FEATURES add more bytes to the compiled binary, OPTIONS change code behavior
2013-12-26 15:23:45 +00:00
2016-01-19 02:27:03 +00:00
2020-11-01 17:09:06 +00:00
// #define FEATURE_BUTTONS
// #define FEATURE_COMMAND_MODE
# define FEATURE_COMMAND_LINE_INTERFACE // Command Line Interface functionality
// #define FEATURE_MEMORIES // on the Arduino Due, you must have FEATURE_EEPROM_E24C1024 and E24C1024 EEPROM hardware in order to compile this
2015-10-15 00:21:21 +00:00
// #define FEATURE_MEMORY_MACROS
2016-08-02 01:17:31 +00:00
// #define FEATURE_WINKEY_EMULATION // disabling Automatic Software Reset is highly recommended (see documentation)
2020-04-21 16:26:53 +00:00
// #define FEATURE_BEACON // Go into beacon mode if paddle_left pin is LOW at boot up
// #define FEATURE_BEACON_SETTING // Go into beacon mode at boot up if EEPROM setting is enabled (\_ CLI Command)
2017-05-04 22:58:48 +00:00
// #define FEATURE_TRAINING_COMMAND_LINE_INTERFACE
2015-04-24 00:20:09 +00:00
// #define FEATURE_POTENTIOMETER // do not enable unless you have a potentiometer connected, otherwise noise will falsely trigger wpm changes
2017-01-16 17:44:54 +00:00
// #define FEATURE_SIDETONE_SWITCH // adds switch control for the sidetone output. requires an external toggle switch (assigned to an arduino pin - see keyer_pin_settings.h).
2020-07-07 15:15:05 +00:00
// #define FEATURE_SIDETONE_NEWTONE // Use the NewTone library, ~1k smaller code size than the standard tone library. Uses timer1 (pins 9 or 10) https://bitbucket.org/teckel12/arduino-new-tone/wiki/Home
2015-04-24 00:20:09 +00:00
// #define FEATURE_SERIAL_HELP
// #define FEATURE_HELL
// #define FEATURE_PS2_KEYBOARD // Use a PS2 keyboard to send code - Change keyboard layout (non-US) in K3NG_PS2Keyboard.h. Additional options below.
// #define FEATURE_USB_KEYBOARD // Use a USB keyboard to send code - Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
2017-03-23 00:49:07 +00:00
// #define FEATURE_CW_COMPUTER_KEYBOARD // Have an Arduino Due or Leonardo act as a USB HID (Human Interface Device) keyboard and use the paddle to "type" characters on the computer -- uncomment this line in ino file: #include <Keyboard.h>
2015-04-24 00:20:09 +00:00
// #define FEATURE_DEAD_OP_WATCHDOG
// #define FEATURE_AUTOSPACE
// #define FEATURE_FARNSWORTH
// #define FEATURE_DL2SBA_BANKSWITCH // Switch memory banks feature as described here: http://dl2sba.com/index.php?option=com_content&view=article&id=131:nanokeyer&catid=15:shack&Itemid=27#english
// #define FEATURE_LCD_4BIT // classic LCD disidefplay using 4 I/O lines
2018-07-15 14:12:49 +00:00
// #define FEATURE_LCD_8BIT // classic LCD display using 8 I/O lines
2015-04-24 00:20:09 +00:00
// #define FEATURE_LCD_ADAFRUIT_I2C // Adafruit I2C LCD display using MCP23017 at addr 0x20
2016-01-30 02:23:00 +00:00
// #define FEATURE_LCD_ADAFRUIT_BACKPACK // Adafruit I2C LCD Backup using MCP23008 (courtesy Josiah Ritchie, KE0BLL)
2015-04-24 00:20:09 +00:00
// #define FEATURE_LCD_YDv1 // YourDuino I2C LCD display with old LCM 1602 V1 ic
// #define FEATURE_LCD1602_N07DH // http://linksprite.com/wiki/index.php5?title=16_X_2_LCD_Keypad_Shield_for_Arduino
2016-03-06 04:03:53 +00:00
// #define FEATURE_LCD_SAINSMART_I2C
2018-03-15 01:30:51 +00:00
// #define FEATURE_LCD_FABO_PCF8574 // https://github.com/FaBoPlatform/FaBoLCD-PCF8574-Library
2019-04-27 15:10:44 +00:00
// #define FEATURE_LCD_MATHERTEL_PCF8574 // https://github.com/mathertel/LiquidCrystal_PCF8574
2020-08-23 12:52:31 +00:00
// #define FEATURE_LCD_I2C_FDEBRABANDER //https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
2019-05-04 00:05:54 +00:00
// #define FEATURE_LCD_HD44780
2020-08-25 00:59:17 +00:00
// #define FEATURE_CW_DECODER // https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder
2016-01-19 02:27:03 +00:00
// #define FEATURE_SLEEP // go to sleep after x minutes to conserve battery power (not compatible with Arduino DUE, may have mixed results with Mega and Mega ADK)
2021-03-20 00:28:35 +00:00
// #define FEATURE_LCD_BACKLIGHT_AUTO_DIM // turn off LCD backlight and/or dim Power Indicator LED after x minutes (LED requires a PWM pin)
2015-04-24 00:20:09 +00:00
// #define FEATURE_ROTARY_ENCODER // rotary encoder speed control
// #define FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING
// #define FEATURE_USB_MOUSE // Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
// #define FEATURE_CAPACITIVE_PADDLE_PINS // remove the bypass capacitors on the paddle_left and paddle_right lines when using capactive paddles
// #define FEATURE_LED_RING // Mayhew Labs Led Ring support
// #define FEATURE_ALPHABET_SEND_PRACTICE // enables command mode S command - created by Ryan, KC2ZWM
2018-01-06 22:28:48 +00:00
// #define FEATURE_COMMAND_MODE_PROGRESSIVE_5_CHAR_ECHO_PRACTICE // enables command mode U
2015-04-24 00:20:09 +00:00
// #define FEATURE_PTT_INTERLOCK
// #define FEATURE_QLF
// #define FEATURE_EEPROM_E24C1024
2015-10-15 00:21:21 +00:00
// #define FEATURE_STRAIGHT_KEY
2015-09-13 15:07:19 +00:00
// #define FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
2019-12-07 17:29:28 +00:00
// #define FEATURE_PADDLE_ECHO // you may also need to comment out line 19 in the file keyer_dependencies.h
2015-10-15 00:07:38 +00:00
// #define FEATURE_STRAIGHT_KEY_ECHO
2017-01-04 02:20:54 +00:00
// #define FEATURE_AMERICAN_MORSE
2017-03-31 00:29:18 +00:00
// #define FEATURE_4x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
// #define FEATURE_3x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
2018-03-11 15:18:58 +00:00
// #define FEATURE_SEQUENCER
2020-07-07 15:37:45 +00:00
// #define FEATURE_WEB_SERVER // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
// #define FEATURE_INTERNET_LINK // Details: https://github.com/k3ng/k3ng_cw_keyer/wiki/390-Feature:-Ethernet,-Web-Server,-and-Internet-Linking
2015-04-24 00:20:09 +00:00
2015-12-19 19:35:10 +00:00
// #define FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT // Activate the Command Line interface on the secondary serial port
2015-04-24 00:20:09 +00:00
# define OPTION_PRIMARY_SERIAL_PORT_DEFAULT_WINKEY_EMULATION // Use when activating both FEATURE_WINKEY_EMULATION and FEATURE_COMMAND_LINE_INTERFACE
// simultaneously. This will make Winkey emulation be the default at boot up;
// hold command button down at boot up to activate CLI mode
2013-08-29 01:35:16 +00:00
2015-11-15 23:17:02 +00:00
// #define OPTION_SUPPRESS_SERIAL_BOOT_MSG
2013-08-29 01:35:16 +00:00
# define OPTION_INCLUDE_PTT_TAIL_FOR_MANUAL_SENDING
2014-03-05 00:58:02 +00:00
# define OPTION_EXCLUDE_PTT_HANG_TIME_FOR_MANUAL_SENDING
2015-11-15 23:17:02 +00:00
// #define OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP // if ASR is not disabled, you may need this to discard errant serial port bytes at startup
// #define OPTION_WINKEY_STRICT_EEPROM_WRITES_MAY_WEAR_OUT_EEPROM // with this activated the unit will write non-volatile settings to EEPROM when set by Winkey commands
// #define OPTION_WINKEY_SEND_WORDSPACE_AT_END_OF_BUFFER
2013-08-29 01:35:16 +00:00
# define OPTION_WINKEY_STRICT_HOST_OPEN // require an admin host open Winkey command before doing any other commands
2015-03-07 17:35:43 +00:00
# define OPTION_WINKEY_2_SUPPORT // comment out to revert to Winkey version 1 emulation
2013-08-29 01:35:16 +00:00
# define OPTION_WINKEY_INTERRUPTS_MEMORY_REPEAT
2016-08-02 01:17:31 +00:00
//#define OPTION_WINKEY_UCXLOG_9600_BAUD // use this only with UCXLog configured for Winkey 9600 baud mode
2018-03-31 14:30:31 +00:00
# define OPTION_WINKEY_2_HOST_CLOSE_NO_SERIAL_PORT_RESET // (Required for Win-Test to function)
2015-11-15 23:17:02 +00:00
// #define OPTION_WINKEY_FREQUENT_STATUS_REPORT // activate this to make Winkey emulation play better with RUMlog and RUMped
2015-10-19 02:55:15 +00:00
# define OPTION_WINKEY_IGNORE_LOWERCASE // Enable for typical K1EL Winkeyer behavior (use for SkookumLogger version 1.10.14 and prior to workaround "r" bug)
2018-04-16 19:17:48 +00:00
// #define OPTION_WINKEY_BLINK_PTT_ON_HOST_OPEN
2019-10-24 01:46:51 +00:00
// #define OPTION_WINKEY_SEND_VERSION_ON_HOST_CLOSE
2020-03-07 12:45:56 +00:00
// #define OPTION_WINKEY_PINCONFIG_PTT_CONTROLS_PTT_LINE // Have Winkeyer PTT setting activate/deactivate PTT line rather than control buffered character PTT hold
2015-11-15 23:17:02 +00:00
// #define OPTION_REVERSE_BUTTON_ORDER // This is mainly for the DJ0MY NanoKeyer http://nanokeyer.wordpress.com/
2013-08-29 01:35:16 +00:00
# define OPTION_PROG_MEM_TRIM_TRAILING_SPACES // trim trailing spaces from memory when programming in command mode
# define OPTION_DIT_PADDLE_NO_SEND_ON_MEM_RPT // this makes dit paddle memory interruption a little smoother
2015-11-15 23:17:02 +00:00
// #define OPTION_MORE_DISPLAY_MSGS // additional optional display messages - comment out to save memory
// #define OPTION_WATCHDOG_TIMER // this enables a four second ATmega48/88/168/328 watchdog timer; use for unattended/remote operation only
// #define OPTION_MOUSE_MOVEMENT_PADDLE // experimental (just fooling around) - mouse movement will act like a paddle
// #define OPTION_NON_ENGLISH_EXTENSIONS // add support for additional CW characters (i.e. À, Å, Þ, etc.)
// #define OPTION_DISPLAY_NON_ENGLISH_EXTENSIONS // LCD display suport for non-English (NO/DK/DE) characters - Courtesy of OZ1JHM
// #define OPTION_UNKNOWN_CHARACTER_ERROR_TONE
// #define OPTION_DO_NOT_SAY_HI
// #define OPTION_PS2_NON_ENGLISH_CHAR_LCD_DISPLAY_SUPPORT // makes some non-English characters from the PS2 keyboard display correctly in the LCD display (donated by Marcin sp5iou)
// #define OPTION_PS2_KEYBOARD_RESET // reset the PS2 keyboard upon startup with 0xFF (contributed by Bill, W9BEL)
2015-10-19 02:55:15 +00:00
// #define OPTION_SAVE_MEMORY_NANOKEYER
2015-04-10 02:43:03 +00:00
# define OPTION_CW_KEYBOARD_CAPSLOCK_BEEP
2015-11-15 23:17:02 +00:00
// #define OPTION_CW_KEYBOARD_ITALIAN
2017-01-18 00:38:16 +00:00
// #define OPTION_CW_KEYBOARD_GERMAN
2020-08-25 00:59:17 +00:00
// #define OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR // https://github.com/k3ng/k3ng_cw_keyer/wiki/385-Feature:-CW-Decoder
2015-11-15 23:17:02 +00:00
// #define OPTION_INVERT_PADDLE_PIN_LOGIC
// #define OPTION_ADVANCED_SPEED_DISPLAY //enables "nerd" speed visualization on display: wpm, cpm (char per min), duration of dit and dah in milliseconds and ratio (contributed by Giorgio, IZ2XBZ)
2015-12-20 18:57:04 +00:00
// #define OPTION_PROSIGN_SUPPORT // additional prosign support for paddle and straight key echo on display, CLI, and in memory storage
2016-01-26 03:56:52 +00:00
// #define OPTION_RUSSIAN_LANGUAGE_SEND_CLI // Russian language CLI sending support (contributed by Павел Бирюков, UA1AQC)
2016-02-09 00:01:25 +00:00
# define OPTION_DO_NOT_SEND_UNKNOWN_CHAR_QUESTION
2017-04-19 20:50:54 +00:00
// #define OPTION_CMOS_SUPER_KEYER_IAMBIC_B_TIMING_ON_BY_DEFAULT
2017-06-04 02:01:40 +00:00
// #define OPTION_SIDETONE_DIGITAL_OUTPUT_NO_SQUARE_WAVE
2019-05-18 01:51:20 +00:00
// #define FEATURE_SD_CARD_SUPPORT
2019-11-08 02:58:17 +00:00
// #define FEATURE_SO2R_BASE // SO2R Box base protocol extensions
// #define FEATURE_SO2R_SWITCHES // SO2R Box TX and RX switches
// #define FEATURE_SO2R_ANTENNA // SO2R Box antenna selection (not fully implemented)
2020-05-27 21:38:15 +00:00
// #define FEATURE_COMMAND_MODE_ENHANCED_CMD_ACKNOWLEDGEMENT
2019-05-18 01:51:20 +00:00
// #define OPTION_DIRECT_PADDLE_PIN_READS_MEGA // only works with Mega and pins 2 and 5 - minor performance increase
2019-06-18 12:47:29 +00:00
// #define OPTION_DIRECT_PADDLE_PIN_READS_UNO // Unos or Nanos pins 2 and 5 - do not enable on a nanoKeyer, it uses different pins
2015-09-19 04:11:18 +00:00
2017-05-05 18:48:05 +00:00
// #define OPTION_WORDSWORTH_CZECH
// #define OPTION_WORDSWORTH_DEUTSCH
2017-05-06 23:38:57 +00:00
// #define OPTION_WORDSWORTH_NORSK
2015-03-04 22:31:22 +00:00
2018-02-06 01:12:08 +00:00
# define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS
2018-03-04 18:38:37 +00:00
// #define OPTION_DFROBOT_LCD_COMMAND_BUTTONS
2018-03-09 02:30:43 +00:00
// #define OPTION_EXCLUDE_MILL_MODE
2020-03-10 22:00:17 +00:00
// #define OPTION_NO_ULTIMATIC // reduce memory usage by removing ultimatic code.
2018-03-09 02:30:43 +00:00
2020-02-05 05:16:06 +00:00
// #define OPTION_DISABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW
2019-12-07 16:56:28 +00:00
2019-12-07 16:16:23 +00:00
// #define OPTION_PERSONALIZED_STARTUP_SCREEN // displays a user defined string of characters on the second or fourth row of the screen during startup. 1602 display requires OPTION_DO_NOT_SAY_HI
2019-12-07 17:06:47 +00:00
// #define OPTION_SWAP_PADDLE_PARAMETER_CHANGE_DIRECTION // reverses the up/down direction when using the paddles to change the wpm or sidetone frequency
2019-12-07 17:29:28 +00:00
# define OPTION_DISPLAY_MEMORY_CONTENTS_COMMAND_MODE
2021-03-10 02:50:00 +00:00
// #define OPTION_BEACON_MODE_MEMORY_REPEAT_TIME // to space out the repeated playing of memory 1 when in beacon mode
// #define OPTION_BEACON_MODE_PTT_TAIL_TIME // adds the ptt tail time to each playing of memory 1 in beacon mode
2020-07-04 15:34:33 +00:00
2021-03-11 00:42:12 +00:00
// #define OPTION_WINKEY_PROSIGN_COMPATIBILITY // Additional character mappings to support K1EL Winkey emulation prosigns