diff --git a/k3ng_keyer/k3ng_keyer.ino b/k3ng_keyer/k3ng_keyer.ino index 49503240..18e25b72 100644 --- a/k3ng_keyer/k3ng_keyer.ino +++ b/k3ng_keyer/k3ng_keyer.ino @@ -804,6 +804,9 @@ Recent Update History 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 https://github.com/k3ng/k3ng_cw_keyer/issues/19) + This code is currently maintained for and compiled with Arduino 1.8.1. Your mileage may vary with other versions. ATTENTION: LIBRARY FILES MUST BE PUT IN LIBRARIES DIRECTORIES AND NOT THE INO SKETCH DIRECTORY !!!! @@ -819,7 +822,7 @@ Recent Update History */ -#define CODE_VERSION "2018.02.01.02" +#define CODE_VERSION "2018.02.05.01" #define eeprom_magic_number 28 // you can change this number to have the unit re-initialize EEPROM #include @@ -9590,7 +9593,7 @@ void service_winkey(byte action) { #ifdef DEBUG_WINKEY debug_serial_port->println("service_winkey: WINKEY_ADMIN_COMMAND 0x01"); #endif //DEBUG_WINKEY - #ifdef defined(__AVR__) //#ifndef ARDUINO_SAM_DUE + #if defined(__AVR__) //#ifndef ARDUINO_SAM_DUE asm volatile ("jmp 0"); /*wdt_enable(WDTO_30MS); while(1) {};*/ #else setup(); diff --git a/k3ng_keyer/keyer_features_and_options.h b/k3ng_keyer/keyer_features_and_options.h index 9ce94d8a..95367db9 100644 --- a/k3ng_keyer/keyer_features_and_options.h +++ b/k3ng_keyer/keyer_features_and_options.h @@ -96,3 +96,5 @@ // #define OPTION_WORDSWORTH_DEUTSCH // #define OPTION_WORDSWORTH_NORSK +#define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS + diff --git a/k3ng_keyer/keyer_features_and_options_fk_10.h b/k3ng_keyer/keyer_features_and_options_fk_10.h index 8fd55bc9..c338601f 100644 --- a/k3ng_keyer/keyer_features_and_options_fk_10.h +++ b/k3ng_keyer/keyer_features_and_options_fk_10.h @@ -112,3 +112,6 @@ // #define OPTION_WORDSWORTH_CZECH // #define OPTION_WORDSWORTH_DEUTSCH // #define OPTION_WORDSWORTH_NORSK + +#define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS + diff --git a/k3ng_keyer/keyer_features_and_options_nanokeyer_rev_b.h b/k3ng_keyer/keyer_features_and_options_nanokeyer_rev_b.h index 9663a5b5..f25bf47a 100644 --- a/k3ng_keyer/keyer_features_and_options_nanokeyer_rev_b.h +++ b/k3ng_keyer/keyer_features_and_options_nanokeyer_rev_b.h @@ -80,3 +80,6 @@ // #define OPTION_WORDSWORTH_CZECH // #define OPTION_WORDSWORTH_DEUTSCH // #define OPTION_WORDSWORTH_NORSK + +#define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS + diff --git a/k3ng_keyer/keyer_features_and_options_nanokeyer_rev_d.h b/k3ng_keyer/keyer_features_and_options_nanokeyer_rev_d.h index 00093fcf..4568bc11 100755 --- a/k3ng_keyer/keyer_features_and_options_nanokeyer_rev_d.h +++ b/k3ng_keyer/keyer_features_and_options_nanokeyer_rev_d.h @@ -78,3 +78,6 @@ // #define OPTION_WORDSWORTH_CZECH // #define OPTION_WORDSWORTH_DEUTSCH // #define OPTION_WORDSWORTH_NORSK + +#define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS + diff --git a/k3ng_keyer/keyer_features_and_options_open_interface.h b/k3ng_keyer/keyer_features_and_options_open_interface.h index de7e565a..11f437b6 100644 --- a/k3ng_keyer/keyer_features_and_options_open_interface.h +++ b/k3ng_keyer/keyer_features_and_options_open_interface.h @@ -82,4 +82,6 @@ // #define OPTION_WORDSWORTH_CZECH // #define OPTION_WORDSWORTH_DEUTSCH -// #define OPTION_WORDSWORTH_NORSK \ No newline at end of file +// #define OPTION_WORDSWORTH_NORSK + +#define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS diff --git a/k3ng_keyer/keyer_features_and_options_test.h b/k3ng_keyer/keyer_features_and_options_test.h index 93833876..0d01e057 100644 --- a/k3ng_keyer/keyer_features_and_options_test.h +++ b/k3ng_keyer/keyer_features_and_options_test.h @@ -8,6 +8,7 @@ // ## ######## ###### ## #define TEST_CONFIG_1 +// #define TEST_CONFIG_2 // #define TEST_CONFIG_EVERYTHING #if defined(TEST_CONFIG_1) @@ -15,7 +16,6 @@ #define FEATURE_COMMAND_BUTTONS #define FEATURE_COMMAND_LINE_INTERFACE // Command Line Interface functionality -// #define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS #define FEATURE_MEMORIES // on the Arduino Due, you must have FEATURE_EEPROM_E24C1024 and E24C1024 EEPROM hardware in order to compile this #define FEATURE_MEMORY_MACROS // #define FEATURE_WINKEY_EMULATION // disabling Automatic Software Reset is highly recommended (see documentation) @@ -123,11 +123,16 @@ // #define OPTION_DIRECT_PADDLE_PIN_READS_MEGA // only works with Mega and pins 2 and 5 - minor performance increase... maybe? +// #define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS + #endif //********************************************************************************************************************* - +//********************************************************************************************************************* +//********************************************************************************************************************* +//********************************************************************************************************************* +//********************************************************************************************************************* #if defined(TEST_CONFIG_EVERYTHING) @@ -242,6 +247,112 @@ #endif +//********************************************************************************************************************* +//********************************************************************************************************************* +//********************************************************************************************************************* +//********************************************************************************************************************* +//********************************************************************************************************************* + +#if defined(TEST_CONFIG_2) + + #define FEATURE_COMMAND_BUTTONS + #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 +// #define FEATURE_MEMORY_MACROS +// #define FEATURE_WINKEY_EMULATION // disabling Automatic Software Reset is highly recommended (see documentation) +// #define FEATURE_BEACON +// #define FEATURE_TRAINING_COMMAND_LINE_INTERFACE + #define FEATURE_POTENTIOMETER // do not enable unless you have a potentiometer connected, otherwise noise will falsely trigger wpm changes +// #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). +// #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) +// #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 + #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 +// #define FEATURE_LCD_ADAFRUIT_I2C // Adafruit I2C LCD display using MCP23017 at addr 0x20 +// #define FEATURE_LCD_ADAFRUIT_BACKPACK // Adafruit I2C LCD Backup using MCP23008 (courtesy Josiah Ritchie, KE0BLL) +// #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 +// #define FEATURE_LCD_SAINSMART_I2C +// #define FEATURE_CW_DECODER +// #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) +// #define FEATURE_ROTARY_ENCODER // rotary encoder speed control +// #define FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING +// #define FEATURE_HI_PRECISION_LOOP_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 +// #define FEATURE_COMMAND_MODE_PROGRESSIVE_5_CHAR_ECHO_PRACTICE // enables command mode U +// #define FEATURE_PTT_INTERLOCK +// #define FEATURE_QLF +// #define FEATURE_EEPROM_E24C1024 +// #define FEATURE_STRAIGHT_KEY +// #define FEATURE_DYNAMIC_DAH_TO_DIT_RATIO +// #define FEATURE_PADDLE_ECHO +// #define FEATURE_STRAIGHT_KEY_ECHO +// #define FEATURE_AMERICAN_MORSE +// #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 + + +// #define FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT // Activate the Command Line interface on the secondary serial port +#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 + +// #define OPTION_SUPPRESS_SERIAL_BOOT_MSG +#define OPTION_INCLUDE_PTT_TAIL_FOR_MANUAL_SENDING +#define OPTION_EXCLUDE_PTT_HANG_TIME_FOR_MANUAL_SENDING +// #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 +#define OPTION_WINKEY_STRICT_HOST_OPEN // require an admin host open Winkey command before doing any other commands +#define OPTION_WINKEY_2_SUPPORT // comment out to revert to Winkey version 1 emulation +#define OPTION_WINKEY_INTERRUPTS_MEMORY_REPEAT +//#define OPTION_WINKEY_UCXLOG_9600_BAUD // use this only with UCXLog configured for Winkey 9600 baud mode +// #define OPTION_WINKEY_2_HOST_CLOSE_NO_SERIAL_PORT_RESET // activate this when using Winkey 2 emulation and Win-Test +// #define OPTION_WINKEY_FREQUENT_STATUS_REPORT // activate this to make Winkey emulation play better with RUMlog and RUMped +#define OPTION_WINKEY_IGNORE_LOWERCASE // Enable for typical K1EL Winkeyer behavior (use for SkookumLogger version 1.10.14 and prior to workaround "r" bug) +// #define OPTION_REVERSE_BUTTON_ORDER // This is mainly for the DJ0MY NanoKeyer http://nanokeyer.wordpress.com/ +#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 +// #define OPTION_MORE_DISPLAY_MSGS // additional optional display messages - comment out to save memory +// #define OPTION_N1MM_WINKEY_TAB_BUG_WORKAROUND // enable this to ignore the TAB key in the Send CW window (this breaks SO2R functionality in N1MM) +// #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_KEEP_PTT_KEYED_WHEN_CHARS_BUFFERED // this option keeps PTT high if there are characters buffered from the keyboard, the serial interface, or Winkey +// #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) +// #define OPTION_SAVE_MEMORY_NANOKEYER +#define OPTION_CW_KEYBOARD_CAPSLOCK_BEEP +// #define OPTION_CW_KEYBOARD_ITALIAN +// #define OPTION_CW_KEYBOARD_GERMAN +// #define OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR +// #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) +// #define OPTION_PROSIGN_SUPPORT // additional prosign support for paddle and straight key echo on display, CLI, and in memory storage +// #define OPTION_RUSSIAN_LANGUAGE_SEND_CLI // Russian language CLI sending support (contributed by Павел Бирюков, UA1AQC) +#define OPTION_DO_NOT_SEND_UNKNOWN_CHAR_QUESTION +// #define OPTION_CMOS_SUPER_KEYER_IAMBIC_B_TIMING_ON_BY_DEFAULT +// #define OPTION_SIDETONE_DIGITAL_OUTPUT_NO_SQUARE_WAVE + +// #define OPTION_WORDSWORTH_CZECH +// #define OPTION_WORDSWORTH_DEUTSCH +// #define OPTION_WORDSWORTH_NORSK + + +#endif //TEST_CONFIG_2 + // ######## ######## ###### ######## // ## ## ## ## ## // ## ## ## ## diff --git a/k3ng_keyer/keyer_features_and_options_tinykeyer.h b/k3ng_keyer/keyer_features_and_options_tinykeyer.h index 34fde784..ef29f190 100755 --- a/k3ng_keyer/keyer_features_and_options_tinykeyer.h +++ b/k3ng_keyer/keyer_features_and_options_tinykeyer.h @@ -62,3 +62,5 @@ // #define OPTION_WORDSWORTH_CZECH // #define OPTION_WORDSWORTH_DEUTSCH // #define OPTION_WORDSWORTH_NORSK + +#define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS diff --git a/k3ng_keyer/keyer_settings_test.h b/k3ng_keyer/keyer_settings_test.h index 3d861d79..da98b8ea 100644 --- a/k3ng_keyer/keyer_settings_test.h +++ b/k3ng_keyer/keyer_settings_test.h @@ -7,7 +7,10 @@ // ## ## ## ## ## // ## ######## ###### ## +#define TEST_SETTINGS_1 +// #define TEST_SETTINGS_2 +#if defined(TEST_SETTINGS_1) #define initial_speed_wpm 26 // "factory default" keyer speed setting #define initial_command_mode_speed_wpm 20 // "factory default" command mode speed setting @@ -234,6 +237,234 @@ #define sd_card_spi_ss_line 4 +#endif //TEST_SETTINGS_1 + +//********************************************************************************************************************* +//********************************************************************************************************************* +//********************************************************************************************************************* +//********************************************************************************************************************* +//********************************************************************************************************************* + +#if defined(TEST_SETTINGS_2) + + +#define initial_speed_wpm 17 // "factory default" keyer speed setting +#define initial_sidetone_freq 588 // "factory default" sidetone frequency setting +#define hz_high_beep 1500 // frequency in hertz of high beep +#define hz_low_beep 400 // frequency in hertz of low beep +#define initial_dah_to_dit_ratio 300 // 300 = 3 / normal 3:1 ratio +#define initial_ptt_lead_time_tx1 0 // PTT lead time in mS +#define initial_ptt_tail_time_tx1 10 // PTT tail time in mS +#define initial_ptt_lead_time_tx2 0 // PTT lead time in mS +#define initial_ptt_tail_time_tx2 10 // PTT tail time in mS +#define initial_ptt_lead_time_tx3 0 // PTT lead time in mS +#define initial_ptt_tail_time_tx3 10 // PTT tail time in mS +#define initial_ptt_lead_time_tx4 0 // PTT lead time in mS +#define initial_ptt_tail_time_tx4 10 // PTT tail time in mS +#define initial_ptt_lead_time_tx5 0 // PTT lead time in mS +#define initial_ptt_tail_time_tx5 10 // PTT tail time in mS +#define initial_ptt_lead_time_tx6 0 // PTT lead time in mS +#define initial_ptt_tail_time_tx6 10 // PTT tail time in mS +#define initial_qrss_dit_length 1 // QRSS dit length in seconds +#define initial_pot_wpm_low_value 12 // Potentiometer WPM fully CCW +#define initial_pot_wpm_high_value 30 // Potentiometer WPM fully CW +#define wpm_limit_low 5 +#define wpm_limit_high 60 +#define potentiometer_change_threshold 0.9 // don't change the keyer speed until pot wpm has changed more than this +#define send_buffer_size 150 +#define default_length_letterspace 3 +#define default_length_wordspace 7 +#define default_keying_compensation 0 // number of milliseconds to extend all dits and dahs - for QSK on boatanchors +#define default_first_extension_time 0 // number of milliseconds to extend first sent dit or dah +#define default_pot_full_scale_reading 1023 +#define default_weighting 50 // 50 = weighting factor of 1 (normal) +#define default_ptt_hang_time_wordspace_units 0.0 +#define memory_area_start 60 // the eeprom location where memory space starts +#define memory_area_end 1023 // the eeprom location where memory space ends +#define winkey_c0_wait_time 1 // the number of milliseconds to wait to send 0xc0 byte after send buffer has been sent +#define winkey_command_timeout_ms 5000 +#define winkey_discard_bytes_startup 3 // this is used if OPTION_WINKEY_DISCARD_BYTES_AT_STARTUP is enabled above +#define winkey_xoff_threshold 20 // the number of chars in the buffer when we begin sending XOFFs +#define winkey_xon_threshold 10 // the number of chars in the buffer below which we deactivate XOFF +#define default_memory_repeat_time 3000 // time in milliseconds +#define LCD_COLUMNS 16 +#define LCD_ROWS 2 +#define hell_pixel_microseconds 4025 +#define program_memory_limit_consec_spaces 1 +#define serial_leading_zeros 1 // set to 1 to activate leading zeros in serial numbers (i.e. #1 = 001) +#define serial_cut_numbers 0 // set to 1 to activate cut numbers in serial numbers (i.e. #10 = 1T, #19 = 1N) +#define go_to_sleep_inactivity_time 10 // minutes - FEATURE_SLEEP +#define default_cmos_super_keyer_iambic_b_timing_percent 33 // use with FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING; should be between 0 to 99 % (0% = true iambic b;100% = iambic a behavior) +#define cw_echo_timing_factor 0.25 +#define potentiometer_always_on 0 +#define ptt_interlock_check_every_ms 100 +#define ptt_interlock_active_state HIGH +#define unknown_cw_character '*' +#define cli_paddle_echo_on_at_boot 1 +#define cli_straight_key_echo_on_at_boot 1 +#define tx_key_dit_and_dah_pins_active_state HIGH +#define tx_key_dit_and_dah_pins_inactive_state LOW +#define potentiometer_check_interval_ms 150 +#define default_paddle_interruption_quiet_time_element_lengths 0 +#define default_wordsworth_wordspace 6 +#define default_wordsworth_repetition 1 +#define serial_program_memory_buffer_size 500 + +#ifdef FEATURE_COMMAND_BUTTONS + #define analog_buttons_number_of_buttons 5 + #define analog_buttons_r1 10 + #define analog_buttons_r2 1.2 +#endif + + +#if defined(FEATURE_COMMAND_BUTTONS) && !defined(FEATURE_PS2_KEYBOARD) && !defined(FEATURE_USB_KEYBOARD) && !defined(FEATURE_COMMAND_LINE_INTERFACE) && !defined(FEATURE_WINKEY_EMULATION) + #define number_of_memories byte(analog_buttons_number_of_buttons-1) +#else + #define number_of_memories byte(12) +#endif + +#ifdef FEATURE_CAPACITIVE_PADDLE_PINS + #define capacitance_threshold 2 +#endif //FEATURE_CAPACITIVE_PADDLE_PINS + +#ifdef FEATURE_LED_RING + #define led_ring_low_limit 10 + #define led_ring_high_limit 50 +#endif //FEATURE_LED_RING + +#ifdef FEATURE_QLF + #define qlf_dit_max 125 + #define qlf_dit_min 75 + #define qlf_dah_max 200 + #define qlf_dah_min 100 + #define qlf_on_by_default 0 +#endif //FEATURE_QLF + + +#ifdef FEATURE_WINKEY_EMULATION + #ifdef OPTION_WINKEY_UCXLOG_9600_BAUD + #define WINKEY_DEFAULT_BAUD 9600 + #else + #define WINKEY_DEFAULT_BAUD 1200 + #endif //OPTION_WINKEY_UCXLOG_9600_BAUD +// alter these below to map alternate sidetones for Winkey interface protocol emulation +#ifdef OPTION_WINKEY_2_SUPPORT + #define WINKEY_SIDETONE_1 3759 + #define WINKEY_SIDETONE_2 1879 + #define WINKEY_SIDETONE_3 1252 + #define WINKEY_SIDETONE_4 940 + #define WINKEY_SIDETONE_5 752 + #define WINKEY_SIDETONE_6 625 + #define WINKEY_SIDETONE_7 535 + #define WINKEY_SIDETONE_8 469 + #define WINKEY_SIDETONE_9 417 + #define WINKEY_SIDETONE_10 375 +#else //OPTION_WINKEY_2_SUPPORT + #define WINKEY_SIDETONE_1 4000 + #define WINKEY_SIDETONE_2 2000 + #define WINKEY_SIDETONE_3 1333 + #define WINKEY_SIDETONE_4 1000 + #define WINKEY_SIDETONE_5 800 + #define WINKEY_SIDETONE_6 666 + #define WINKEY_SIDETONE_7 571 + #define WINKEY_SIDETONE_8 500 + #define WINKEY_SIDETONE_9 444 + #define WINKEY_SIDETONE_10 400 +#endif //OPTION_WINKEY_2_SUPPORT + +#define WINKEY_1_REPORT_VERSION_NUMBER 10 +#define WINKEY_2_REPORT_VERSION_NUMBER 23 + +// alter these to map to alternate hang time wordspace units +#define WINKEY_HANG_TIME_1_0 1.0 +#define WINKEY_HANG_TIME_1_33 1.33 +#define WINKEY_HANG_TIME_1_66 1.66 +#define WINKEY_HANG_TIME_2_0 2.0 + +#endif //FEATURE_WINKEY_EMULATION + + + +#define PRIMARY_SERIAL_PORT &Serial +#define PRIMARY_SERIAL_PORT_BAUD 115200 // This applies only when the port is in Command Line Interface mode. In Winkey mode it will default to 1200. + +#ifdef FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT + #define SECONDARY_SERIAL_PORT &Serial1 + #define SECONDARY_SERIAL_PORT_BAUD 115200 +#endif + + +#define CW_DECODER_SCREEN_COLUMNS 120 // word wrap at this many columns +#define CW_DECODER_SPACE_PRINT_THRESH 4.5 // print space if no tone for this many element lengths +#define CW_DECODER_SPACE_DECODE_THRESH 2.0 // invoke character decode if no tone for this many element lengths +#define CW_DECODER_NOISE_FILTER 20 // ignore elements shorter than this (mS) + +#define STRAIGHT_KEY_ACTIVE_STATE LOW + +#ifdef FEATURE_DYNAMIC_DAH_TO_DIT_RATIO + #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 + +#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION) + #define COMPETITION_COMPRESSION_DETECTION_ARRAY_SIZE 16 + #define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_LOWER_LIMIT 1 + #define COMPETITION_COMPRESSION_DETECTION_TIME_INTERCHAR_UPPER_LIMIT 6.0 + #define COMPETITION_COMPRESSION_DETECTION_AVERAGE_ALARM_THRESHOLD 3.0 +#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION + +#if defined(FEATURE_SLEEP) + #define KEYER_AWAKE_PIN_AWAKE_STATE HIGH + #define KEYER_AWAKE_PIN_ASLEEP_STATE LOW +#endif + +#if defined(FEATURE_ETHERNET) + // #define FEATURE_ETHERNET_IP {192,168,1,178} // default IP address ("192.168.1.178") + // #define FEATURE_ETHERNET_MAC {0xDE,0xAD,0xBE,0xEF,0xFE,0xED} + #define FEATURE_ETHERNET_IP {192,168,1,179} // default IP address ("192.168.1.179") + #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 +#endif //FEATURE_ETHERNET + +#define WEB_SERVER_CONTROL_TX_KEY_TIME_LIMIT_SECS 10 + +#define FEATURE_INTERNET_LINK_MAX_LINKS 2 +#define FEATURE_INTERNET_LINK_DEFAULT_RCV_UDP_PORT 8888 +#define FEATURE_INTERNET_LINK_BUFFER_TIME_MS 500 + +#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD) + #define KEYPAD_ROWS 4 //KeyPad Rows + #if defined(FEATURE_4x4_KEYPAD) + #define KEYPAD_COLS 4 //keypad Columns + #else + #define KEYPAD_COLS 3 + #endif + #define mem1 0 //Memory numbers for Keypad: Actual memory numbers start with "0" + #define mem2 1 + #define mem3 2 + #define mem4 3 + #define mem5 4 + #define mem6 5 + #define mem7 6 + #define mem8 7 + #define mem9 8 + #define mem10 9 + #define mem11 10 + #define mem12 11 +#endif //#if defined(FEATURE_4x4_KEYPAD)|| defined (FEATURE_3x4_KEYPAD) + +#define initial_sidetone_mode 1 // Sidetone mode, 0=OFF, 1=ON, 2=PADDLE_ONLY +#define initial_command_mode_speed_wpm 20 + +#endif //TEST_SETTINGS_2 + // ######## ######## ###### ######## // ## ## ## ## ## // ## ## ## ##