kopia lustrzana https://github.com/k3ng/k3ng_cw_keyer
Merge branch 'master' into Paddle_Direction_Parameter_Change
commit
270e3ac423
|
@ -1123,6 +1123,17 @@ Recent Update History
|
|||
2019.11.13.01
|
||||
Various code compilation warning cleanups. (Thanks, Paul, K1XM)
|
||||
|
||||
2019.12.07.01
|
||||
Updated version number for multiple merged pull requests
|
||||
https://github.com/k3ng/k3ng_cw_keyer/pull/78 - Custom startup text - Thanks, Fred, VK2EFL
|
||||
https://github.com/k3ng/k3ng_cw_keyer/pull/80 - FK-11 Support - Thanks, Ben git1k2
|
||||
https://github.com/k3ng/k3ng_cw_keyer/pull/82 - Additional display info - Thanks, Fred, VK2EFL
|
||||
Fixed errant text at line 7293 from merge of pull request 82
|
||||
|
||||
2019.12.07.02
|
||||
Added OPTION_PERSONALIZED_STARTUP_SCREEN and custom_startup_field to feature and settings files of all hardware profiles (from pull request 78)
|
||||
|
||||
|
||||
This code is currently maintained for and compiled with Arduino 1.8.x. Your mileage may vary with other versions.
|
||||
|
||||
ATTENTION: LIBRARY FILES MUST BE PUT IN LIBRARIES DIRECTORIES AND NOT THE INO SKETCH DIRECTORY !!!!
|
||||
|
@ -1137,7 +1148,7 @@ Recent Update History
|
|||
|
||||
*/
|
||||
|
||||
#define CODE_VERSION "2019.11.13.01"
|
||||
#define CODE_VERSION "2019.12.07.02"
|
||||
#define eeprom_magic_number 35 // you can change this number to have the unit re-initialize EEPROM
|
||||
|
||||
#include <stdio.h>
|
||||
|
@ -1173,6 +1184,8 @@ Recent Update History
|
|||
#include "keyer_features_and_options_tinykeyer.h"
|
||||
#elif defined(HARDWARE_FK_10)
|
||||
#include "keyer_features_and_options_fk_10.h"
|
||||
#elif defined(HARDWARE_FK_11)
|
||||
#include "keyer_features_and_options_fk_11.h"
|
||||
#elif defined(HARDWARE_MAPLE_MINI)//sp5iou 20180328
|
||||
#include "keyer_features_and_options_maple_mini.h"
|
||||
#elif defined(HARDWARE_GENERIC_STM32F103C)//sp5iou 20180329
|
||||
|
@ -1233,6 +1246,9 @@ Recent Update History
|
|||
#elif defined(HARDWARE_FK_10)
|
||||
#include "keyer_pin_settings_fk_10.h"
|
||||
#include "keyer_settings_fk_10.h"
|
||||
#elif defined(HARDWARE_FK_11)
|
||||
#include "keyer_pin_settings_fk_11.h"
|
||||
#include "keyer_settings_fk_11.h"
|
||||
#elif defined(HARDWARE_MAPLE_MINI)
|
||||
#include "keyer_pin_settings_maple_mini.h"
|
||||
#include "keyer_settings_maple_mini.h"
|
||||
|
@ -6811,8 +6827,7 @@ long get_cw_input_from_user(unsigned int exit_time_milliseconds) {
|
|||
//-------------------------------------------------------------------------------------------------------
|
||||
|
||||
#ifdef FEATURE_COMMAND_BUTTONS
|
||||
void command_mode()
|
||||
{
|
||||
void command_mode() {
|
||||
|
||||
keyer_machine_mode = KEYER_COMMAND_MODE;
|
||||
|
||||
|
@ -6823,7 +6838,6 @@ void command_mode()
|
|||
#ifdef OPTION_WATCHDOG_TIMER
|
||||
wdt_disable();
|
||||
#endif //OPTION_WATCHDOG_TIMER
|
||||
|
||||
|
||||
byte looping;
|
||||
byte button_that_was_pressed = 0;
|
||||
|
@ -6925,10 +6939,7 @@ void command_mode()
|
|||
}
|
||||
#endif
|
||||
|
||||
} //while (looping)
|
||||
|
||||
|
||||
|
||||
} //while (looping)
|
||||
// end new code
|
||||
|
||||
#ifdef DEBUG_COMMAND_MODE
|
||||
|
@ -6969,10 +6980,22 @@ void command_mode()
|
|||
} else {
|
||||
lcd_center_print_timed("Single Paddle", 0, default_display_msg_delay);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
send_dit();
|
||||
break;
|
||||
case 1: // E - announce spEed
|
||||
case 1: // E - announce spEed
|
||||
#ifdef FEATURE_DISPLAY
|
||||
#if defined(OPTION_ADVANCED_SPEED_DISPLAY)
|
||||
lcd_center_print_timed("Speed", 0, default_display_msg_delay);
|
||||
lcd_center_print_timed(String(configuration.wpm) + " wpm - " + (configuration.wpm*5) + " cpm ", 1, default_display_msg_delay);
|
||||
if (LCD_ROWS > 2) {
|
||||
lcd_center_print_timed(String(1200/configuration.wpm) + ":" + (((1200/configuration.wpm)*configuration.dah_to_dit_ratio)/100) + "ms 1:" + (float(configuration.dah_to_dit_ratio)/100.00), 2, default_display_msg_delay);
|
||||
}
|
||||
#else // OPTION_ADVANCED_SPEED_DISPLAY_DISPLAY
|
||||
lcd_center_print_timed("Speed " + String(configuration.wpm) + " wpm", 0, default_display_msg_delay);
|
||||
#endif // OPTION_ADVANCED_SPEED_DISPLAY_DISPLAY
|
||||
#endif // FEATURE_DISPLAY
|
||||
|
||||
delay(250);
|
||||
sprintf(c, "%d", configuration.wpm);
|
||||
send_char(c[0],KEYER_NORMAL);
|
||||
|
@ -6985,7 +7008,7 @@ void command_mode()
|
|||
configuration.dah_buffer_off = 1;
|
||||
config_dirty = 1;
|
||||
#ifdef FEATURE_DISPLAY
|
||||
if (LCD_COLUMNS < 9){
|
||||
if (LCD_COLUMNS < 9) {
|
||||
lcd_center_print_timed("Ultimatc", 0, default_display_msg_delay);
|
||||
} else {
|
||||
lcd_center_print_timed("Ultimatic", 0, default_display_msg_delay);
|
||||
|
@ -7084,7 +7107,6 @@ void command_mode()
|
|||
command_speed_mode(COMMAND_SPEED_MODE_COMMAND_MODE_WPM);
|
||||
break;
|
||||
|
||||
|
||||
#ifdef FEATURE_MEMORIES
|
||||
case 1221: command_program_memory(); break; // P - program a memory
|
||||
#endif //FEATURE_MEMORIES Acknowledgement: LA3ZA fixed!
|
||||
|
@ -7115,7 +7137,7 @@ void command_mode()
|
|||
case 222: // O - cycle through sidetone modes on, paddle only and off - enhanced by Marc-Andre, VE2EVN
|
||||
if (configuration.sidetone_mode == SIDETONE_PADDLE_ONLY) {
|
||||
#ifdef FEATURE_DISPLAY
|
||||
if (LCD_COLUMNS < 9){
|
||||
if (LCD_COLUMNS < 9) {
|
||||
lcd_center_print_timed("ST Off", 0, default_display_msg_delay);
|
||||
} else {
|
||||
lcd_center_print_timed("Sidetone Off", 0, default_display_msg_delay);
|
||||
|
@ -7131,7 +7153,7 @@ void command_mode()
|
|||
if (LCD_COLUMNS < 9){
|
||||
lcd_center_print_timed("ST Pdl O", 0, default_display_msg_delay);
|
||||
}
|
||||
if (LCD_COLUMNS > 19){
|
||||
if (LCD_COLUMNS > 19) {
|
||||
lcd_center_print_timed("Sidetone Paddle Only", 0, default_display_msg_delay);
|
||||
} else {
|
||||
lcd_center_print_timed("Sidetone", 0, default_display_msg_delay);
|
||||
|
@ -7147,7 +7169,7 @@ void command_mode()
|
|||
beep();
|
||||
} else {
|
||||
#ifdef FEATURE_DISPLAY
|
||||
if (LCD_COLUMNS < 9){
|
||||
if (LCD_COLUMNS < 9) {
|
||||
lcd_center_print_timed("ST On", 0, default_display_msg_delay);
|
||||
} else {
|
||||
lcd_center_print_timed("Sidetone On", 0, default_display_msg_delay);
|
||||
|
@ -7162,9 +7184,7 @@ void command_mode()
|
|||
config_dirty = 1;
|
||||
break;
|
||||
|
||||
|
||||
case 121: command_set_serial_number(); break; // R - Set serial number
|
||||
|
||||
case 121: command_set_serial_number(); break; // R - Set serial number
|
||||
|
||||
case 2: command_tuning_mode(); break; // T - tuning mode
|
||||
#ifdef FEATURE_POTENTIOMETER
|
||||
|
@ -7172,7 +7192,7 @@ void command_mode()
|
|||
if (configuration.pot_activated) {
|
||||
configuration.pot_activated = 0;
|
||||
#ifdef FEATURE_DISPLAY
|
||||
if (LCD_COLUMNS > 14){
|
||||
if (LCD_COLUMNS > 14) {
|
||||
lcd_center_print_timed("Pot Deactivated", 0, default_display_msg_delay);
|
||||
} else {
|
||||
lcd_center_print_timed("Pot Off", 0, default_display_msg_delay);
|
||||
|
@ -7244,7 +7264,6 @@ void command_mode()
|
|||
send_char(55,KEYER_NORMAL);send_char(51,KEYER_NORMAL);send_char(32,KEYER_NORMAL);send_char(69,KEYER_NORMAL);send_char(69,KEYER_NORMAL);
|
||||
break;
|
||||
|
||||
|
||||
#ifdef FEATURE_ALPHABET_SEND_PRACTICE // enhanced by Fred, VK2EFL
|
||||
case 111: // S - Alphabet Send Practice
|
||||
#ifdef FEATURE_DISPLAY
|
||||
|
@ -7261,8 +7280,7 @@ void command_mode()
|
|||
command_alphabet_send_practice();
|
||||
stay_in_command_mode = 0;
|
||||
break;
|
||||
#endif //FEATURE_ALPHABET_SEND_PRACTICE
|
||||
|
||||
#endif //FEATURE_ALPHABET_SEND_PRACTICE
|
||||
|
||||
#ifdef FEATURE_COMMAND_MODE_PROGRESSIVE_5_CHAR_ECHO_PRACTICE
|
||||
case 112: // U - 5 Character Echo Practice
|
||||
|
@ -7271,8 +7289,15 @@ void command_mode()
|
|||
break;
|
||||
#endif //FEATURE_COMMAND_MODE_PROGRESSIVE_5_CHAR_PRACTICE
|
||||
|
||||
case 112211: // ? - status
|
||||
|
||||
case 112211: // ? - status
|
||||
#ifdef FEATURE_DISPLAY
|
||||
lcd_center_print_timed("Status", 0, default_display_msg_delay);
|
||||
lcd_center_print_timed("speed, mode, weight", 1, default_display_msg_delay);
|
||||
if(LCD_ROWS > 2){
|
||||
lcd_center_print_timed("dit/dah ratio", 2, default_display_msg_delay);
|
||||
}
|
||||
#endif // FEATURE_DISPLAY
|
||||
|
||||
delay(250);
|
||||
sprintf(c, "%d", configuration.wpm);
|
||||
send_char(c[0],KEYER_NORMAL);
|
||||
|
@ -7299,7 +7324,6 @@ void command_mode()
|
|||
send_char(' ',KEYER_NORMAL);
|
||||
send_char(' ',KEYER_NORMAL);
|
||||
|
||||
|
||||
sprintf(c, "%d", configuration.weighting);
|
||||
send_char(c[0],KEYER_NORMAL);
|
||||
send_char(c[1],KEYER_NORMAL);
|
||||
|
@ -7311,11 +7335,8 @@ void command_mode()
|
|||
send_char(c[1],KEYER_NORMAL);
|
||||
send_char(c[2],KEYER_NORMAL);
|
||||
send_char(' ',KEYER_NORMAL);
|
||||
|
||||
break;
|
||||
|
||||
|
||||
|
||||
case 9: // button was hit
|
||||
Serial.print("Button - ");
|
||||
Serial.println(button_that_was_pressed);
|
||||
|
@ -7376,8 +7397,7 @@ void command_mode()
|
|||
|
||||
//-------------------------------------------------------------------------------------------------------
|
||||
#if defined(FEATURE_COMMAND_MODE_PROGRESSIVE_5_CHAR_ECHO_PRACTICE) && defined(FEATURE_COMMAND_BUTTONS)
|
||||
void command_progressive_5_char_echo_practice(){
|
||||
|
||||
void command_progressive_5_char_echo_practice() {
|
||||
|
||||
byte loop1 = 1;
|
||||
byte loop2 = 0;
|
||||
|
@ -7399,11 +7419,9 @@ void command_progressive_5_char_echo_practice(){
|
|||
if ((configuration.keyer_mode != IAMBIC_A) && (configuration.keyer_mode != IAMBIC_B)) {
|
||||
configuration.keyer_mode = IAMBIC_B; // we got to be in iambic mode (life is too short to make this work in bug mode)
|
||||
}
|
||||
|
||||
randomSeed(millis());
|
||||
|
||||
#ifdef FEATURE_DISPLAY // enhanced by Fred, VK2EFL
|
||||
|
||||
#ifdef FEATURE_DISPLAY // enhanced by Fred, VK2EFL
|
||||
lcd_clear();
|
||||
if (LCD_COLUMNS > 17){
|
||||
lcd_center_print_timed("Receive / Transmit", 0, default_display_msg_delay);
|
||||
|
@ -7425,9 +7443,7 @@ void command_progressive_5_char_echo_practice(){
|
|||
}
|
||||
}
|
||||
service_display();
|
||||
|
||||
#else
|
||||
|
||||
send_char('E',0);
|
||||
send_char('C',0);
|
||||
send_char('H',0);
|
||||
|
@ -7437,14 +7453,9 @@ void command_progressive_5_char_echo_practice(){
|
|||
send_char(' ',0);
|
||||
beep();
|
||||
beep();
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
while (loop1){
|
||||
|
||||
|
||||
while (loop1) {
|
||||
// if (practice_mode_called == ECHO_MIXED){
|
||||
// practice_mode = random(ECHO_2_CHAR_WORDS,ECHO_QSO_WORDS+1);
|
||||
// } else {
|
||||
|
@ -7495,18 +7506,15 @@ void command_progressive_5_char_echo_practice(){
|
|||
// break;
|
||||
// } //switch (practice_mode)
|
||||
|
||||
|
||||
loop2 = 1;
|
||||
|
||||
while (loop2){
|
||||
|
||||
while (loop2) {
|
||||
user_send_loop = 1;
|
||||
user_sent_cw = "";
|
||||
cw_char = 0;
|
||||
x = 0;
|
||||
|
||||
// send the CW to the user
|
||||
while ((x < (cw_to_send_to_user.length())) && (x < progressive_step_counter)){
|
||||
while ((x < (cw_to_send_to_user.length())) && (x < progressive_step_counter)) {
|
||||
send_char(cw_to_send_to_user[x],KEYER_NORMAL);
|
||||
// test
|
||||
// port_to_use->print(cw_to_send_to_user[x]);
|
||||
|
@ -7518,7 +7526,6 @@ void command_progressive_5_char_echo_practice(){
|
|||
while (user_send_loop) {
|
||||
// get their paddle input
|
||||
|
||||
|
||||
#ifdef FEATURE_DISPLAY
|
||||
service_display();
|
||||
#endif
|
||||
|
@ -7571,57 +7578,81 @@ void command_progressive_5_char_echo_practice(){
|
|||
//port_to_use->println();
|
||||
}
|
||||
|
||||
|
||||
// does the user want to exit?
|
||||
while (analogbuttonread(0)) {
|
||||
user_send_loop = 0;
|
||||
loop1 = 0;
|
||||
loop2 = 0;
|
||||
if (correct_answer_led) digitalWrite(correct_answer_led, LOW); // clear the LEDs as we exit
|
||||
if (wrong_answer_led) digitalWrite(wrong_answer_led, LOW);
|
||||
}
|
||||
|
||||
} //while (user_send_loop)
|
||||
|
||||
} //while (user_send_loop)
|
||||
|
||||
if (loop1 && loop2){
|
||||
if (progressive_step_counter < 255){ // we're in progressive mode
|
||||
if (user_sent_cw.substring(0,progressive_step_counter) == cw_to_send_to_user.substring(0,progressive_step_counter)){
|
||||
send_char(' ',0);
|
||||
send_char(' ',0);
|
||||
progressive_step_counter++;
|
||||
if (progressive_step_counter == 6){
|
||||
if (loop1 && loop2) {
|
||||
if (progressive_step_counter < 255) { // we're in progressive mode
|
||||
if (user_sent_cw.substring(0,progressive_step_counter) == cw_to_send_to_user.substring(0,progressive_step_counter)) { // we get here if the character entered is correct
|
||||
if (progressive_step_counter < 6) { // if the step counter is less than 6 then we have not finished the 5 character string
|
||||
if (correct_answer_led) digitalWrite(correct_answer_led, HIGH); // set the correct answer LED high
|
||||
if (wrong_answer_led) digitalWrite(wrong_answer_led, LOW); // clear the wrong answer LED
|
||||
beep(); // and beep
|
||||
#ifdef FEATURE_DISPLAY
|
||||
if (LCD_COLUMNS > 17) lcd_center_print_timed("Success! " + String(progressive_step_counter) + " correct", 0, default_display_msg_delay);
|
||||
else lcd_center_print_timed("Success!", 0, default_display_msg_delay);
|
||||
#endif // FEATURE_DISPLAY
|
||||
send_char(' ',0);
|
||||
send_char(' ',0);
|
||||
progressive_step_counter++;
|
||||
} // end if (progressive_step_counter < 6)
|
||||
if (progressive_step_counter == 6) { // we get here if the five character string is correct
|
||||
loop2 = 0;
|
||||
beep();
|
||||
if (correct_answer_led) digitalWrite(correct_answer_led, HIGH); // set the correct answer LED high
|
||||
#ifdef FEATURE_DISPLAY
|
||||
lcd_center_print_timed("Success!", 0, default_display_msg_delay);
|
||||
if (LCD_COLUMNS > 17) lcd_center_print_timed("5 characters correct", 1, default_display_msg_delay);
|
||||
if (LCD_COLUMNS < 17) lcd_center_print_timed("5 char correct", 1, default_display_msg_delay);
|
||||
#endif // FEATURE_DISPLAY
|
||||
unsigned int NEWtone = 400; // the initial tone freuency for the tone sequence
|
||||
unsigned int TONEduration = 50; // define the duration of each tone element in the tone sequence to drive a speaker
|
||||
for (int k=0; k<6; k++) { // a loop to generate some increasing tones
|
||||
tone(sidetone_line,NEWtone); // generate a tone on the speaker pin
|
||||
delay(TONEduration); // hold the tone for the specified delay period
|
||||
noTone(sidetone_line); // turn off the tone
|
||||
NEWtone = NEWtone*1.25; // calculate a new value for the tone frequency
|
||||
} // end for
|
||||
send_char(' ',0);
|
||||
send_char(' ',0);
|
||||
}
|
||||
} else {
|
||||
if (correct_answer_led) digitalWrite(correct_answer_led, LOW); // clear the correct answer LED
|
||||
} // end if (progressive_step_counter == 6)
|
||||
} else { // we get here if the character entered is wrong
|
||||
if (wrong_answer_led) digitalWrite(wrong_answer_led, HIGH); // set the wrong answer LED high
|
||||
if (correct_answer_led) digitalWrite(correct_answer_led, LOW); // clear the correct answer LED
|
||||
boop();
|
||||
send_char(' ',0);
|
||||
send_char(' ',0);
|
||||
}
|
||||
} else {
|
||||
if (user_sent_cw == cw_to_send_to_user){
|
||||
} else { // I don't think we ever get here, unless the progressive_step_counter is more than 255, but it is reset as Loop1 starts
|
||||
if (user_sent_cw == cw_to_send_to_user) { // correct answer
|
||||
beep();
|
||||
send_char(' ',0);
|
||||
send_char(' ',0);
|
||||
send_char(' ',0);
|
||||
loop2 = 0;
|
||||
} else {
|
||||
} else { // wrong answer
|
||||
boop();
|
||||
send_char(' ',0);
|
||||
send_char(' ',0);
|
||||
}
|
||||
} //if (progressive_step_counter < 255)
|
||||
} //if (loop1 && loop2)
|
||||
} //loop2
|
||||
} //loop1
|
||||
} // if (progressive_step_counter < 255)
|
||||
} // if (loop1 && loop2)
|
||||
} //loop2
|
||||
} //loop1
|
||||
|
||||
|
||||
speed_mode = speed_mode_before;
|
||||
configuration.keyer_mode = keyer_mode_before;
|
||||
paddle_echo_buffer = 0;
|
||||
|
||||
}
|
||||
#endif //defined(FEATURE_COMMAND_MODE_PROGRESSIVE_5_CHAR_ECHO_PRACTICE) && defined(FEATURE_COMMAND_BUTTONS)
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------
|
||||
|
||||
#if defined(FEATURE_COMMAND_BUTTONS)
|
||||
|
@ -7651,7 +7682,6 @@ void command_set_serial_number() {
|
|||
//config_dirty = 1;
|
||||
beep();
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -12552,7 +12582,6 @@ void service_paddle_echo()
|
|||
debug_serial_port->println();
|
||||
#endif //DEBUG_CW_COMPUTER_KEYBOARD
|
||||
#endif //defined(FEATURE_CW_COMPUTER_KEYBOARD)
|
||||
|
||||
|
||||
#ifdef FEATURE_DISPLAY
|
||||
if (lcd_paddle_echo){
|
||||
|
@ -12603,11 +12632,7 @@ void service_paddle_echo()
|
|||
}
|
||||
display_scroll_print_char(ascii_temp);
|
||||
#endif //OPTION_DISPLAY_NON_ENGLISH_EXTENSIONS
|
||||
|
||||
#endif //OPTION_PROSIGN_SUPPORT
|
||||
|
||||
|
||||
|
||||
}
|
||||
#endif //FEATURE_DISPLAY
|
||||
|
||||
|
@ -12615,8 +12640,6 @@ void service_paddle_echo()
|
|||
#if defined(OPTION_PROSIGN_SUPPORT)
|
||||
byte_temp = convert_cw_number_to_ascii(paddle_echo_buffer);
|
||||
if (cli_paddle_echo){
|
||||
|
||||
|
||||
if ((byte_temp > PROSIGN_START) && (byte_temp < PROSIGN_END)){
|
||||
primary_serial_port->print(prosign_temp[0]);
|
||||
primary_serial_port->print(prosign_temp[1]);
|
||||
|
@ -12625,7 +12648,6 @@ void service_paddle_echo()
|
|||
secondary_serial_port->print(prosign_temp[1]);
|
||||
#endif //FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT
|
||||
} else {
|
||||
|
||||
if (configuration.cli_mode == CLI_MILL_MODE_KEYBOARD_RECEIVE){
|
||||
primary_serial_port->println();
|
||||
primary_serial_port->println();
|
||||
|
@ -12731,6 +12753,7 @@ void serial_set_memory_repeat(PRIMARY_SERIAL_CLS * port_to_use) {
|
|||
|
||||
}
|
||||
#endif
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
#if defined(FEATURE_SERIAL) && defined(FEATURE_COMMAND_LINE_INTERFACE) && defined(FEATURE_MEMORIES)
|
||||
|
@ -12744,9 +12767,7 @@ void repeat_play_memory(PRIMARY_SERIAL_CLS * port_to_use) {
|
|||
if (memory_number > -1) {
|
||||
repeat_memory = memory_number - 1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
|
@ -12760,15 +12781,13 @@ void serial_play_memory(byte memory_number) {
|
|||
add_to_send_buffer(memory_number);
|
||||
repeat_memory = 255;
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
#if defined(FEATURE_SERIAL) && defined(FEATURE_COMMAND_LINE_INTERFACE)
|
||||
int serial_get_number_input(byte places,int lower_limit, int upper_limit,PRIMARY_SERIAL_CLS * port_to_use,int raise_error_message)
|
||||
{
|
||||
int serial_get_number_input(byte places,int lower_limit, int upper_limit,PRIMARY_SERIAL_CLS * port_to_use,int raise_error_message) {
|
||||
byte incoming_serial_byte = 0;
|
||||
byte looping = 1;
|
||||
byte error = 0;
|
||||
|
@ -12856,9 +12875,9 @@ void serial_change_wordspace(PRIMARY_SERIAL_CLS * port_to_use)
|
|||
#endif
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
#if defined(FEATURE_SERIAL) && defined(FEATURE_COMMAND_LINE_INTERFACE)
|
||||
void serial_switch_tx(PRIMARY_SERIAL_CLS * port_to_use)
|
||||
{
|
||||
void serial_switch_tx(PRIMARY_SERIAL_CLS * port_to_use) {
|
||||
int set_tx_to = serial_get_number_input(1,0,7,port_to_use,RAISE_ERROR_MSG);
|
||||
if (set_tx_to > 0) {
|
||||
switch (set_tx_to){
|
||||
|
@ -12892,11 +12911,11 @@ void serial_set_dit_to_dah_ratio(PRIMARY_SERIAL_CLS * port_to_use)
|
|||
port_to_use->write("\r\nDah to dit ratio set to ");
|
||||
port_to_use->println((float(configuration.dah_to_dit_ratio)/100));
|
||||
config_dirty = 1;
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
#if defined(FEATURE_SERIAL) && defined(FEATURE_COMMAND_LINE_INTERFACE)
|
||||
void serial_set_serial_number(PRIMARY_SERIAL_CLS * port_to_use)
|
||||
{
|
||||
|
@ -12910,6 +12929,7 @@ void serial_set_serial_number(PRIMARY_SERIAL_CLS * port_to_use)
|
|||
#endif
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
#if defined(FEATURE_SERIAL) && defined(FEATURE_COMMAND_LINE_INTERFACE) && defined(FEATURE_POTENTIOMETER)
|
||||
void serial_set_pot_low_high(PRIMARY_SERIAL_CLS * port_to_use)
|
||||
{
|
||||
|
@ -12931,9 +12951,9 @@ void serial_set_pot_low_high(PRIMARY_SERIAL_CLS * port_to_use)
|
|||
#endif
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
#if defined(FEATURE_SERIAL) && defined(FEATURE_COMMAND_LINE_INTERFACE)
|
||||
void serial_set_sidetone_freq(PRIMARY_SERIAL_CLS * port_to_use)
|
||||
{
|
||||
void serial_set_sidetone_freq(PRIMARY_SERIAL_CLS * port_to_use) {
|
||||
int set_sidetone_hz = serial_get_number_input(4,(sidetone_hz_limit_low-1),(sidetone_hz_limit_high+1), port_to_use, RAISE_ERROR_MSG);
|
||||
if ((set_sidetone_hz > sidetone_hz_limit_low) && (set_sidetone_hz < sidetone_hz_limit_high)) {
|
||||
port_to_use->write("\r\nSetting sidetone to ");
|
||||
|
@ -12941,14 +12961,18 @@ void serial_set_sidetone_freq(PRIMARY_SERIAL_CLS * port_to_use)
|
|||
port_to_use->println(F(" hz"));
|
||||
configuration.hz_sidetone = set_sidetone_hz;
|
||||
config_dirty = 1;
|
||||
#ifdef FEATURE_DISPLAY
|
||||
if (LCD_COLUMNS < 9) lcd_center_print_timed(String(configuration.hz_sidetone) + " Hz", 0, default_display_msg_delay);
|
||||
else lcd_center_print_timed("Sidetone " + String(configuration.hz_sidetone) + " Hz", 0, default_display_msg_delay);
|
||||
#endif // FEATURE_DISPLAY
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
#if defined(FEATURE_SERIAL) && defined(FEATURE_COMMAND_LINE_INTERFACE)
|
||||
void serial_wpm_set(PRIMARY_SERIAL_CLS * port_to_use)
|
||||
{
|
||||
void serial_wpm_set(PRIMARY_SERIAL_CLS * port_to_use) {
|
||||
int set_wpm = serial_get_number_input(3,0,1000, port_to_use, RAISE_ERROR_MSG);
|
||||
if (set_wpm > 0) {
|
||||
speed_set(set_wpm);
|
||||
|
@ -12960,9 +12984,9 @@ void serial_wpm_set(PRIMARY_SERIAL_CLS * port_to_use)
|
|||
#endif
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
#if defined(FEATURE_SERIAL) && defined(FEATURE_COMMAND_LINE_INTERFACE) && defined(FEATURE_FARNSWORTH)
|
||||
void serial_set_farnsworth(PRIMARY_SERIAL_CLS * port_to_use)
|
||||
{
|
||||
void serial_set_farnsworth(PRIMARY_SERIAL_CLS * port_to_use) {
|
||||
int set_farnsworth_wpm = serial_get_number_input(3,-1,1000, port_to_use, RAISE_ERROR_MSG);
|
||||
if ((set_farnsworth_wpm > 0) || (set_farnsworth_wpm == 0)) {
|
||||
configuration.wpm_farnsworth = set_farnsworth_wpm;
|
||||
|
@ -12974,9 +12998,9 @@ void serial_set_farnsworth(PRIMARY_SERIAL_CLS * port_to_use)
|
|||
#endif
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
#if defined(FEATURE_SERIAL) && defined(FEATURE_COMMAND_LINE_INTERFACE)
|
||||
void serial_set_weighting(PRIMARY_SERIAL_CLS * port_to_use)
|
||||
{
|
||||
void serial_set_weighting(PRIMARY_SERIAL_CLS * port_to_use) {
|
||||
int set_weighting = serial_get_number_input(2,9,91,port_to_use, DONT_RAISE_ERROR_MSG);
|
||||
if (set_weighting < 1) {
|
||||
set_weighting = 50;
|
||||
|
@ -12988,9 +13012,9 @@ void serial_set_weighting(PRIMARY_SERIAL_CLS * port_to_use)
|
|||
#endif
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
#if defined(FEATURE_SERIAL) && defined(FEATURE_COMMAND_LINE_INTERFACE)
|
||||
void serial_tune_command (PRIMARY_SERIAL_CLS * port_to_use)
|
||||
{
|
||||
void serial_tune_command (PRIMARY_SERIAL_CLS * port_to_use) {
|
||||
byte incoming;
|
||||
|
||||
delay(100);
|
||||
|
@ -13010,10 +13034,11 @@ void serial_tune_command (PRIMARY_SERIAL_CLS * port_to_use)
|
|||
incoming = port_to_use->read();
|
||||
}
|
||||
tx_and_sidetone_key(0);
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
#ifdef FEATURE_TRAINING_COMMAND_LINE_INTERFACE
|
||||
|
||||
String generate_callsign(byte callsign_mode) {
|
||||
|
@ -13108,17 +13133,14 @@ String generate_callsign(byte callsign_mode) {
|
|||
|
||||
// // VT100 emulation in Linux: screen /dev/ttyACM1 115200 term vt100
|
||||
|
||||
|
||||
// #define CONTEST_PRACTICE_IDLE 0
|
||||
// #define CONTEST_PRACTICE_CQ_SENT 1
|
||||
// #define CONTEST_PRACTICE_REPORT_SENT 2
|
||||
|
||||
|
||||
|
||||
// #define FIELD_CALLSIGN 0
|
||||
// #define FIELD_NR 1
|
||||
// #define FIELD_SECTION 2
|
||||
|
||||
|
||||
// byte overall_state = CONTEST_PRACTICE_IDLE;
|
||||
// byte loop1 = 1;
|
||||
// byte user_input_buffer[10];
|
||||
|
@ -13156,8 +13178,6 @@ String generate_callsign(byte callsign_mode) {
|
|||
// term.println(F("-------- ---- -------\n\n"));
|
||||
|
||||
// while (loop1){
|
||||
|
||||
|
||||
// // get user keyboard input
|
||||
// if (port_to_use->available()){
|
||||
// user_input_buffer[user_input_buffer_characters] = toupper(port_to_use->read());
|
||||
|
@ -13177,7 +13197,6 @@ String generate_callsign(byte callsign_mode) {
|
|||
// port_to_use->write(49);
|
||||
// port_to_use->write(68);
|
||||
// break;
|
||||
|
||||
|
||||
// default:
|
||||
// if (!(((user_input_buffer[user_input_buffer_characters-1] == 27) && (user_input_buffer[user_input_buffer_characters] == 79) && (user_input_buffer_characters>0)) ||
|
||||
|
@ -13191,7 +13210,6 @@ String generate_callsign(byte callsign_mode) {
|
|||
|
||||
// }//(port_to_use->available())
|
||||
|
||||
|
||||
// // process user keyboard input
|
||||
// if ((process_user_input_buffer) && ((escape_flag_time == 0) || ((millis()-escape_flag_time) > 100))){
|
||||
|
||||
|
@ -13285,10 +13303,8 @@ String generate_callsign(byte callsign_mode) {
|
|||
// term.println(section);
|
||||
// term.position(15,0);
|
||||
// term.print(F(" "));
|
||||
// term.position(15,0);
|
||||
|
||||
// term.position(15,0);
|
||||
// }
|
||||
|
||||
// } //(user_input_buffer[0] == '\\')
|
||||
// } //(user_input_buffer_characters > 0)
|
||||
// process_user_input_buffer = 0;
|
||||
|
@ -13330,24 +13346,19 @@ String generate_callsign(byte callsign_mode) {
|
|||
// transition_time = millis();
|
||||
// } //send_buffer_bytes == 0
|
||||
// break; //CONTEST_PRACTICE_CQ_SENT
|
||||
|
||||
|
||||
// } //switch(overall_state)
|
||||
|
||||
|
||||
// } //while (loop1)
|
||||
|
||||
// configuration.hz_sidetone = previous_sidetone;
|
||||
// configuration.wpm = previous_wpm;
|
||||
// send_buffer_bytes = 0;
|
||||
|
||||
// }
|
||||
// #endif
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
#if defined(FEATURE_SERIAL) && defined(FEATURE_TRAINING_COMMAND_LINE_INTERFACE) && defined(FEATURE_COMMAND_LINE_INTERFACE)
|
||||
void serial_cw_practice(PRIMARY_SERIAL_CLS * port_to_use){
|
||||
|
||||
void serial_cw_practice(PRIMARY_SERIAL_CLS * port_to_use) {
|
||||
|
||||
byte menu_loop = 1;
|
||||
byte menu_loop2 = 1;
|
||||
|
@ -13375,7 +13386,7 @@ void serial_cw_practice(PRIMARY_SERIAL_CLS * port_to_use){
|
|||
|
||||
menu_loop2 = 1;
|
||||
|
||||
while (menu_loop2){
|
||||
while (menu_loop2) {
|
||||
|
||||
if (port_to_use->available()){
|
||||
incoming_char = port_to_use->read();
|
||||
|
@ -13385,7 +13396,6 @@ void serial_cw_practice(PRIMARY_SERIAL_CLS * port_to_use){
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
incoming_char = toUpperCase(incoming_char);
|
||||
|
||||
switch(incoming_char){
|
||||
|
@ -13400,27 +13410,23 @@ void serial_cw_practice(PRIMARY_SERIAL_CLS * port_to_use){
|
|||
|
||||
} //while(menu_loop)
|
||||
|
||||
port_to_use->println(F("Exiting Training module..."));
|
||||
port_to_use->println(F("Exited Training module..."));
|
||||
check_serial_override = 0;
|
||||
key_tx = previous_key_tx_state;
|
||||
paddle_echo_buffer = 0;
|
||||
|
||||
paddle_echo_buffer = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
#if defined(FEATURE_SERIAL) && defined(FEATURE_TRAINING_COMMAND_LINE_INTERFACE) && defined(FEATURE_COMMAND_LINE_INTERFACE)
|
||||
void serial_receive_transmit_echo_menu(PRIMARY_SERIAL_CLS * port_to_use){
|
||||
|
||||
void serial_receive_transmit_echo_menu(PRIMARY_SERIAL_CLS * port_to_use) {
|
||||
|
||||
byte menu_loop = 1;
|
||||
byte menu_loop2 = 1;
|
||||
char incoming_char = ' ';
|
||||
|
||||
while(menu_loop){
|
||||
while(menu_loop) {
|
||||
|
||||
while (port_to_use->available() > 0) { // clear out the buffer if anything is there
|
||||
port_to_use->read();
|
||||
|
@ -13442,20 +13448,18 @@ void serial_receive_transmit_echo_menu(PRIMARY_SERIAL_CLS * port_to_use){
|
|||
|
||||
menu_loop2 = 1;
|
||||
|
||||
while (menu_loop2){
|
||||
|
||||
while (menu_loop2) {
|
||||
if (port_to_use->available()){
|
||||
incoming_char = port_to_use->read();
|
||||
if ((incoming_char != 10) && (incoming_char != 13)){
|
||||
if ((incoming_char != 10) && (incoming_char != 13)) {
|
||||
menu_loop2 = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
incoming_char = toUpperCase(incoming_char);
|
||||
|
||||
|
||||
switch(incoming_char){
|
||||
switch(incoming_char) {
|
||||
case 'X': menu_loop = 0; break;
|
||||
case 'I': receive_transmit_echo_practice(port_to_use,CALLSIGN_INTERNATIONAL); break;
|
||||
case 'U': receive_transmit_echo_practice(port_to_use,CALLSIGN_US); break;
|
||||
|
@ -13473,17 +13477,13 @@ void serial_receive_transmit_echo_menu(PRIMARY_SERIAL_CLS * port_to_use){
|
|||
} //while(menu_loop)
|
||||
|
||||
port_to_use->println(F("Exiting receive / transmit echo practice..."));
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
#if defined(FEATURE_SERIAL) && defined(FEATURE_TRAINING_COMMAND_LINE_INTERFACE) && defined(FEATURE_COMMAND_LINE_INTERFACE)
|
||||
void receive_transmit_echo_practice(PRIMARY_SERIAL_CLS * port_to_use,byte practice_mode_called){
|
||||
|
||||
|
||||
|
||||
void receive_transmit_echo_practice(PRIMARY_SERIAL_CLS * port_to_use,byte practice_mode_called) {
|
||||
|
||||
byte loop1 = 1;
|
||||
byte loop2 = 0;
|
||||
|
@ -13538,9 +13538,7 @@ void receive_transmit_echo_practice(PRIMARY_SERIAL_CLS * port_to_use,byte practi
|
|||
incoming_char = port_to_use->read();
|
||||
}
|
||||
|
||||
while (loop1){
|
||||
|
||||
|
||||
while (loop1) {
|
||||
if (practice_mode_called == ECHO_MIXED){
|
||||
practice_mode = random(ECHO_2_CHAR_WORDS,ECHO_QSO_WORDS+1);
|
||||
} else {
|
||||
|
@ -13584,13 +13582,11 @@ void receive_transmit_echo_practice(PRIMARY_SERIAL_CLS * port_to_use,byte practi
|
|||
strcpy_P(word_buffer, (char*)pgm_read_word(&(qso_table[random(0,qso_size)])));
|
||||
cw_to_send_to_user = word_buffer;
|
||||
break;
|
||||
} //switch (practice_mode)
|
||||
|
||||
} // switch (practice_mode)
|
||||
|
||||
loop2 = 1;
|
||||
|
||||
while (loop2){
|
||||
|
||||
user_send_loop = 1;
|
||||
user_sent_cw = "";
|
||||
cw_char = 0;
|
||||
|
@ -13609,7 +13605,6 @@ void receive_transmit_echo_practice(PRIMARY_SERIAL_CLS * port_to_use,byte practi
|
|||
while (user_send_loop) {
|
||||
// get their paddle input
|
||||
|
||||
|
||||
#ifdef FEATURE_DISPLAY
|
||||
service_display();
|
||||
#endif
|
||||
|
@ -13671,7 +13666,6 @@ void receive_transmit_echo_practice(PRIMARY_SERIAL_CLS * port_to_use,byte practi
|
|||
|
||||
}
|
||||
|
||||
|
||||
// does the user want to exit?
|
||||
while(port_to_use->available() > 0) {
|
||||
incoming_char = port_to_use->read();
|
||||
|
@ -13687,8 +13681,7 @@ void receive_transmit_echo_practice(PRIMARY_SERIAL_CLS * port_to_use,byte practi
|
|||
}
|
||||
#endif
|
||||
|
||||
|
||||
} //while (user_send_loop)
|
||||
} // while (user_send_loop)
|
||||
|
||||
if (loop1 && loop2){
|
||||
|
||||
|
@ -13697,7 +13690,7 @@ void receive_transmit_echo_practice(PRIMARY_SERIAL_CLS * port_to_use,byte practi
|
|||
send_char(' ',0);
|
||||
send_char(' ',0);
|
||||
progressive_step_counter++;
|
||||
if (progressive_step_counter == 6){
|
||||
if (progressive_step_counter == 6) {
|
||||
loop2 = 0;
|
||||
beep();
|
||||
send_char(' ',0);
|
||||
|
@ -13721,29 +13714,25 @@ void receive_transmit_echo_practice(PRIMARY_SERIAL_CLS * port_to_use,byte practi
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
} //loop2
|
||||
} //loop1
|
||||
|
||||
speed_mode = speed_mode_before;
|
||||
configuration.keyer_mode = keyer_mode_before;
|
||||
paddle_echo_buffer = 0;
|
||||
|
||||
}
|
||||
#endif //defined(FEATURE_SERIAL) && defined(FEATURE_TRAINING_COMMAND_LINE_INTERFACE) && defined(FEATURE_COMMAND_LINE_INTERFACE)
|
||||
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
#if defined(FEATURE_SERIAL) && defined(FEATURE_TRAINING_COMMAND_LINE_INTERFACE) && defined(FEATURE_COMMAND_LINE_INTERFACE)
|
||||
void serial_receive_practice_menu(PRIMARY_SERIAL_CLS * port_to_use,byte practice_mode){
|
||||
|
||||
void serial_receive_practice_menu(PRIMARY_SERIAL_CLS * port_to_use,byte practice_mode) {
|
||||
|
||||
byte menu_loop = 1;
|
||||
byte menu_loop2 = 1;
|
||||
char incoming_char = ' ';
|
||||
|
||||
while(menu_loop){
|
||||
|
||||
while (port_to_use->available() > 0) { // clear out the buffer if anything is there
|
||||
port_to_use->read();
|
||||
}
|
||||
|
@ -13805,10 +13794,10 @@ void serial_receive_practice_menu(PRIMARY_SERIAL_CLS * port_to_use,byte practice
|
|||
case 'N': serial_practice_non_interactive(port_to_use,PRACTICE_NAMES); break;
|
||||
case 'M': serial_practice_non_interactive(port_to_use,PRACTICE_MIXED); break;
|
||||
case 'Q': serial_practice_non_interactive(port_to_use,PRACTICE_QSO_WORDS); break;
|
||||
} //switch(incoming_char)
|
||||
} // switch(incoming_char)
|
||||
|
||||
}
|
||||
} //while(menu_loop)
|
||||
} // while(menu_loop)
|
||||
|
||||
port_to_use->println(F("Exiting callsign training..."));
|
||||
|
||||
|
@ -13818,7 +13807,7 @@ void serial_receive_practice_menu(PRIMARY_SERIAL_CLS * port_to_use,byte practice
|
|||
//---------------------------------------------------------------------
|
||||
|
||||
#if defined(FEATURE_SERIAL) && defined(FEATURE_TRAINING_COMMAND_LINE_INTERFACE) && defined(FEATURE_COMMAND_LINE_INTERFACE)
|
||||
void serial_set_wordspace_parameters(PRIMARY_SERIAL_CLS * port_to_use,byte mode_select){
|
||||
void serial_set_wordspace_parameters(PRIMARY_SERIAL_CLS * port_to_use,byte mode_select) {
|
||||
|
||||
byte menu_loop = 1;
|
||||
byte menu_loop2 = 1;
|
||||
|
@ -13932,16 +13921,13 @@ void serial_random_menu(PRIMARY_SERIAL_CLS * port_to_use){
|
|||
} //while(menu_loop)
|
||||
|
||||
port_to_use->println(F("Exiting Random code module..."));
|
||||
|
||||
|
||||
}
|
||||
#endif //defined(FEATURE_SERIAL) && defined(FEATURE_TRAINING_COMMAND_LINE_INTERFACE) && defined(FEATURE_COMMAND_LINE_INTERFACE)
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
#if defined(FEATURE_SERIAL) && defined(FEATURE_TRAINING_COMMAND_LINE_INTERFACE) && defined(FEATURE_COMMAND_LINE_INTERFACE)
|
||||
void random_practice(PRIMARY_SERIAL_CLS * port_to_use,byte random_mode,byte group_size)
|
||||
{
|
||||
void random_practice(PRIMARY_SERIAL_CLS * port_to_use,byte random_mode,byte group_size) {
|
||||
|
||||
byte loop1 = 1;
|
||||
byte x = 0;
|
||||
|
@ -15391,9 +15377,9 @@ void display_serial_number_character(char snumchar){
|
|||
|
||||
#endif
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
#ifdef FEATURE_MEMORIES
|
||||
byte play_memory(byte memory_number)
|
||||
{
|
||||
byte play_memory(byte memory_number) {
|
||||
|
||||
unsigned int jump_back_to_y = 9999;
|
||||
byte jump_back_to_memory_number = 255;
|
||||
|
@ -15538,9 +15524,7 @@ byte play_memory(byte memory_number)
|
|||
winkey_port_write(eeprom_byte_read,0);
|
||||
#endif // OPTION_PROSIGN_SUPPORT
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
#ifdef FEATURE_COMMAND_LINE_INTERFACE_ON_SECONDARY_PORT
|
||||
#if defined(OPTION_PROSIGN_SUPPORT)
|
||||
if ((eeprom_temp > PROSIGN_START) && (eeprom_temp < PROSIGN_END)){
|
||||
|
@ -15594,7 +15578,6 @@ byte play_memory(byte memory_number)
|
|||
#endif // FEATURE_DISPLAY
|
||||
|
||||
}
|
||||
|
||||
if (prosign_flag) {
|
||||
send_char(eeprom_byte_read,OMIT_LETTERSPACE);
|
||||
prosign_flag = 0;
|
||||
|
@ -15701,7 +15684,7 @@ byte play_memory(byte memory_number)
|
|||
if (delay_result) { // if a paddle or button0 was hit during the delay, exit
|
||||
return 0;
|
||||
}
|
||||
break; // case D
|
||||
break; // case D
|
||||
|
||||
case 'E': // E - play serial number, then increment
|
||||
send_serial_number(0,1,0);
|
||||
|
@ -15730,9 +15713,16 @@ byte play_memory(byte memory_number)
|
|||
}
|
||||
if ((input_error != 1) && (int_from_macro > sidetone_hz_limit_low) && (int_from_macro < sidetone_hz_limit_high)) {
|
||||
configuration.hz_sidetone = int_from_macro;
|
||||
#ifdef FEATURE_DISPLAY
|
||||
if (LCD_COLUMNS < 9) lcd_center_print_timed(String(configuration.hz_sidetone) + " Hz", 0, default_display_msg_delay);
|
||||
else lcd_center_print_timed("Sidetone " + String(configuration.hz_sidetone) + " Hz", 0, default_display_msg_delay);
|
||||
#endif // FEATURE_DISPLAY
|
||||
}
|
||||
break;
|
||||
if ((input_error != 1) && (int_from_macro > sidetone_hz_limit_low) && (int_from_macro < sidetone_hz_limit_high)) {
|
||||
configuration.hz_sidetone = int_from_macro;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 'H': // H - Switch to Hell
|
||||
char_send_mode = HELL;
|
||||
|
@ -17186,6 +17176,14 @@ void initialize_display(){
|
|||
lcd_center_print_timed("K3NGKeyr",0,4000);
|
||||
} else {
|
||||
lcd_center_print_timed("K3NG Keyer",0,4000);
|
||||
#ifdef OPTION_PERSONALIZED_STARTUP_SCREEN
|
||||
if (LCD_ROWS == 2) {
|
||||
#ifdef OPTION_DO_NOT_SAY_HI // if we wish to display the custom field on the second line, we can't say 'hi'
|
||||
lcd_center_print_timed(custom_startup_field, 1, 4000); // display the custom field on the second line of the display, maximum field length is the number of columns
|
||||
#endif // OPTION_DO_NOT_SAY_HI
|
||||
} else if (LCD_ROWS > 2) lcd_center_print_timed(custom_startup_field, 2, 4000); // display the custom field on the third line of the display, maximum field length is the number of columns
|
||||
#endif // OPTION_PERSONALIZED_STARTUP_SCREEN
|
||||
if (LCD_ROWS > 3) lcd_center_print_timed("V: " + String(CODE_VERSION), 3, 4000); // display the code version on the fourth line of the display
|
||||
}
|
||||
#endif //FEATURE_DISPLAY
|
||||
|
||||
|
|
|
@ -114,5 +114,7 @@
|
|||
// #define OPTION_EXCLUDE_MILL_MODE
|
||||
|
||||
// #define OPTION_ENABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW_MAY_CAUSE_PROBLEMS
|
||||
// #define OPTION_SWAP_PADDLE_PARAMETER_CHANGE_DIRECTION // reverses the up/down direction when using the paddles to change the wpm or sidetone frequency
|
||||
|
||||
// #define OPTION_SWAP_PADDLE_PARAMETER_CHANGE_DIRECTION // reverses the up/down direction when using the paddles to change the wpm or sidetone frequency
|
||||
// #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
|
||||
|
||||
|
|
|
@ -128,4 +128,5 @@
|
|||
// #define OPTION_EXCLUDE_MILL_MODE
|
||||
|
||||
//#define OPTION_ENABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW_MAY_CAUSE_PROBLEMS
|
||||
// #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
|
||||
|
||||
|
|
|
@ -0,0 +1,119 @@
|
|||
// 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
|
||||
|
||||
// Funtronics FK-11
|
||||
|
||||
#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 <Keyboard.h>
|
||||
#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_8BIT // classic LCD display using 8 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_LCD_FABO_PCF8574 // https://github.com/FaBoPlatform/FaBoLCD-PCF8574-Library
|
||||
// #define FEATURE_LCD_MATHERTEL_PCF8574 // https://github.com/mathertel/LiquidCrystal_PCF8574
|
||||
// #define FEATURE_LCD_HD44780
|
||||
#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_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_SEQUENCER
|
||||
|
||||
#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 // (Required for Win-Test to function)
|
||||
// #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_WINKEY_BLINK_PTT_ON_HOST_OPEN
|
||||
// #define OPTION_WINKEY_SEND_VERSION_ON_HOST_CLOSE
|
||||
// #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_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)
|
||||
// #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 FEATURE_SD_CARD_SUPPORT
|
||||
// #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)
|
||||
|
||||
#define OPTION_DIRECT_PADDLE_PIN_READS_MEGA // only works with Mega and pins 2 and 5 - minor performance increase
|
||||
// #define OPTION_DIRECT_PADDLE_PIN_READS_UNO // Unos or Nanos pins 2 and 5 - do not enable on a nanoKeyer, it uses different pins
|
||||
|
||||
// #define OPTION_WORDSWORTH_CZECH
|
||||
// #define OPTION_WORDSWORTH_DEUTSCH
|
||||
// #define OPTION_WORDSWORTH_NORSK
|
||||
|
||||
#define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS
|
||||
|
||||
// #define OPTION_DFROBOT_LCD_COMMAND_BUTTONS
|
||||
|
||||
// #define OPTION_EXCLUDE_MILL_MODE
|
||||
|
||||
//#define OPTION_ENABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW_MAY_CAUSE_PROBLEMS
|
||||
// #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
|
||||
|
|
@ -115,3 +115,4 @@ Generic STM32F103C "Blue Pill"
|
|||
// #define OPTION_EXCLUDE_MILL_MODE
|
||||
|
||||
//#define OPTION_ENABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW_MAY_CAUSE_PROBLEMS
|
||||
// #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
|
||||
|
|
|
@ -111,4 +111,5 @@
|
|||
// #define OPTION_EXCLUDE_MILL_MODE
|
||||
|
||||
//#define OPTION_ENABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW_MAY_CAUSE_PROBLEMS
|
||||
// #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
|
||||
|
||||
|
|
|
@ -109,3 +109,4 @@
|
|||
// #define OPTION_EXCLUDE_MILL_MODE
|
||||
|
||||
#define OPTION_DISABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW
|
||||
// #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
|
||||
|
|
|
@ -123,3 +123,4 @@
|
|||
// #define OPTION_EXCLUDE_MILL_MODE
|
||||
|
||||
//#define OPTION_ENABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW_MAY_CAUSE_PROBLEMS
|
||||
// #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
|
||||
|
|
|
@ -115,4 +115,5 @@
|
|||
// #define OPTION_EXCLUDE_MILL_MODE
|
||||
|
||||
//#define OPTION_ENABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW_MAY_CAUSE_PROBLEMS
|
||||
// #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
|
||||
|
||||
|
|
|
@ -103,3 +103,4 @@
|
|||
#define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS
|
||||
|
||||
//#define OPTION_ENABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW_MAY_CAUSE_PROBLEMS
|
||||
// #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
|
||||
|
|
|
@ -99,4 +99,5 @@
|
|||
// #define OPTION_WORDSWORTH_NORSK
|
||||
|
||||
#define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS
|
||||
// #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
|
||||
|
||||
|
|
|
@ -99,4 +99,5 @@
|
|||
// #define OPTION_WORDSWORTH_NORSK
|
||||
|
||||
#define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS
|
||||
// #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
|
||||
|
||||
|
|
|
@ -99,4 +99,5 @@
|
|||
// #define OPTION_WORDSWORTH_NORSK
|
||||
|
||||
#define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS
|
||||
// #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
|
||||
|
||||
|
|
|
@ -99,4 +99,5 @@
|
|||
// #define OPTION_WORDSWORTH_NORSK
|
||||
|
||||
#define OPTION_EXCLUDE_EXTENDED_CLI_COMMANDS
|
||||
// #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
|
||||
|
||||
|
|
|
@ -93,3 +93,4 @@
|
|||
#define OPTION_EXCLUDE_MILL_MODE
|
||||
|
||||
//#define OPTION_ENABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW_MAY_CAUSE_PROBLEMS
|
||||
// #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
|
||||
|
|
|
@ -91,5 +91,6 @@
|
|||
#define OPTION_EXCLUDE_MILL_MODE
|
||||
|
||||
//#define OPTION_ENABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW_MAY_CAUSE_PROBLEMS
|
||||
// #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
|
||||
|
||||
|
||||
|
|
|
@ -71,7 +71,7 @@
|
|||
//#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_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
|
||||
|
@ -96,5 +96,6 @@
|
|||
|
||||
// #define OPTION_EXCLUDE_MILL_MODE
|
||||
|
||||
//#define OPTION_ENABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW_MAY_CAUSE_PROBLEMS
|
||||
// #define OPTION_ENABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW_MAY_CAUSE_PROBLEMS
|
||||
// #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
|
||||
|
||||
|
|
|
@ -111,4 +111,5 @@
|
|||
// #define OPTION_EXCLUDE_MILL_MODE
|
||||
|
||||
//#define OPTION_ENABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW_MAY_CAUSE_PROBLEMS
|
||||
// #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
|
||||
|
||||
|
|
|
@ -143,6 +143,7 @@
|
|||
#define OPTION_EXCLUDE_MILL_MODE
|
||||
|
||||
//#define OPTION_ENABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW_MAY_CAUSE_PROBLEMS
|
||||
// #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
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -124,3 +124,4 @@
|
|||
// #define OPTION_EXCLUDE_MILL_MODE
|
||||
|
||||
#define OPTION_ENABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW_MAY_CAUSE_PROBLEMS
|
||||
// #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
|
||||
|
|
|
@ -75,3 +75,4 @@
|
|||
#define OPTION_EXCLUDE_MILL_MODE
|
||||
|
||||
//#define OPTION_ENABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW_MAY_CAUSE_PROBLEMS
|
||||
// #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
|
||||
|
|
|
@ -107,3 +107,5 @@
|
|||
// #define OPTION_DIRECT_PADDLE_PIN_READS_MEGA // only works with Mega and pins 2 and 5 - minor performance increase
|
||||
// #define OPTION_DIRECT_PADDLE_PIN_READS_UNO // Unos or Nanos pins 2 and 5 - do not enable on a nanoKeyer, it uses different pins
|
||||
|
||||
// #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
|
||||
|
||||
|
|
|
@ -119,3 +119,4 @@
|
|||
// #define OPTION_EXCLUDE_MILL_MODE
|
||||
|
||||
//#define OPTION_ENABLE_SERIAL_PORT_CHECKING_WHILE_SENDING_CW_MAY_CAUSE_PROBLEMS
|
||||
// #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
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
// #define HARDWARE_OPEN_INTERFACE // http://remoteqth.com/open-interface.php edit these files: keyer_pin_settings_open_interface.h, keyer_features_and_options_open_interface.h, keyer_settings_open_interface.h
|
||||
// #define HARDWARE_TINYKEYER // http://www.ok1rr.com/index.php/technical-topics/122-the-tinykeyer edit these files: keyer_pin_settings_tinykeyer.h, keyer_features_and_options_tinykeyer.h, keyer_settings_tinykeyer.h
|
||||
// #define HARDWARE_FK_10 // Funtronics K3NG Keyer FK-10 - See notes below!!! http://www.elekitsorparts.com/product/funtronics-k3ng-keyer-fk-10-99-winkey-emulation/ files: keyer_pin_settings_fk_10.h, keyer_features_and_options_fk_10.h, keyer_settings_fk_10.h
|
||||
// #define HARDWARE_FK_11 // Funtronics K3NG Keyer FK-11 - See notes below! https://www.elekitsorparts.com/?product=funtronics-k3ng-keyer-with-99-winkey-emulation files: keyer_pin_settings_fk_11.h, keyer_features_and_options_fk_11.h, keyer_settings_fk_11.h
|
||||
// #define HARDWARE_MAPLE_MINI // edit these files: keyer_pin_settings_maple_mini.h, keyer_settings_maple_mini.h, keyer_features_and_options_maple_mini.h
|
||||
// #define HARDWARE_GENERIC_STM32F103C // edit these files: keyer_pin_settings_generic_STM32F103C.h, keyer_settings_generic_STM32F103C.h, keyer_features_and_options_generic_STM32F103C.h //sp5iou 20180329
|
||||
// #define HARDWARE_MORTTY // edit these files: keyer_pin_settings_mortty.h, keyer_settings_mortty.h, keyer_features_and_options_mortty.h
|
||||
|
@ -57,7 +58,20 @@
|
|||
typedef MAX3421e<P53, P9> MAX3421E; // Official Arduinos (UNO, Duemilanove, Mega, 2560, Leonardo, Due etc.) or Teensy 2.0 and 3.0
|
||||
#endif
|
||||
|
||||
Funtronics FK-11 Programming Notes
|
||||
|
||||
Programming the unit is accomplished by selecting "Arduino Mega 2560" as the target processor and uploading to the rear USB port with the
|
||||
front switch set to the Arduino position.
|
||||
|
||||
Note: in order to get the FK-11 display working correctly you will need to:
|
||||
- Install FaBo_212_LCD_PCF8574 library
|
||||
- Set the slave address to 0x27 in FaBo_212_LCD_PCF8574/src/FaBoLCD_PCF8574.h
|
||||
#define PCF8574_SLAVE_ADDRESS 0x27
|
||||
|
||||
Note: in order to get the FK-11 USB Host port working correctly you will need to:
|
||||
- Uncomment three lines in in file: k3ng_keyer.ino below 'note_usb_uncomment_lines'.
|
||||
- Add line to file k3ng_cw_keyer/libraries/USB_Host_Shield/settings.h, below 'Manual board activation':
|
||||
#define BOARD_MEGA_ADK
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,164 @@
|
|||
// Funtronics FK-11
|
||||
|
||||
/* Pins - you must review these and configure ! */
|
||||
#ifndef keyer_pin_settings_h
|
||||
#define keyer_pin_settings_h
|
||||
|
||||
#define paddle_left 2
|
||||
#define paddle_right 5
|
||||
#define tx_key_line_1 39 // (high = key down/tx on)
|
||||
#define tx_key_line_2 0
|
||||
#define tx_key_line_3 0
|
||||
#define tx_key_line_4 0
|
||||
#define tx_key_line_5 0
|
||||
#define tx_key_line_6 0
|
||||
#define sidetone_line 3 // connect a speaker for sidetone
|
||||
#define potentiometer A0 // Speed potentiometer (0 to 5 V) Use pot from 1k to 10k
|
||||
#define ptt_tx_1 40 // PTT ("push to talk") lines
|
||||
#define ptt_tx_2 0 // Can be used for keying fox transmitter, T/R switch, or keying slow boatanchors
|
||||
#define ptt_tx_3 0 // These are optional - set to 0 if unused
|
||||
#define ptt_tx_4 0
|
||||
#define ptt_tx_5 0
|
||||
#define ptt_tx_6 0
|
||||
#define tx_key_dit 0 // if defined, goes active for dit (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||
#define tx_key_dah 0 // if defined, goes active for dah (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
|
||||
|
||||
#define potentiometer_enable_pin 0 // if defined, the potentiometer will be enabled only when this pin is held low; set to 0 to ignore this pin
|
||||
|
||||
#ifdef FEATURE_COMMAND_BUTTONS
|
||||
#define analog_buttons_pin A2
|
||||
#define command_mode_active_led 0
|
||||
#endif //FEATURE_COMMAND_BUTTONS
|
||||
|
||||
/*
|
||||
FEATURE_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).
|
||||
Arduino pin is assigned by SIDETONE_SWITCH
|
||||
*/
|
||||
|
||||
#ifdef FEATURE_SIDETONE_SWITCH
|
||||
#define SIDETONE_SWITCH 8
|
||||
#endif //FEATURE_SIDETONE_SWITCH
|
||||
|
||||
|
||||
//lcd pins
|
||||
#if defined(FEATURE_LCD_4BIT) || defined(FEATURE_LCD_8BIT)
|
||||
#define lcd_rs A2
|
||||
#define lcd_enable 10 // pin 10 is used by Ethernet shield and will conflict with that
|
||||
#define lcd_d4 6
|
||||
#define lcd_d5 7
|
||||
#define lcd_d6 8
|
||||
#define lcd_d7 9
|
||||
#endif //FEATURE_LCD_4BIT || defined(FEATURE_LCD_8BIT)
|
||||
|
||||
#if defined(FEATURE_LCD_8BIT) // addition four data lines for 8 bit LCD control
|
||||
#define lcd_d0 20
|
||||
#define lcd_d1 21
|
||||
#define lcd_d2 22
|
||||
#define lcd_d3 23
|
||||
#endif //FEATURE_LCD_4BIT || defined(FEATURE_LCD_8BIT)
|
||||
|
||||
#ifdef FEATURE_LCD1602_N07DH
|
||||
#define lcd_rs 8
|
||||
#define lcd_enable 9
|
||||
#define lcd_d4 4
|
||||
#define lcd_d5 5
|
||||
#define lcd_d6 6
|
||||
#define lcd_d7 7
|
||||
#endif //FEATURE_LCD1602_N07DH
|
||||
|
||||
//ps2 keyboard pins
|
||||
#ifdef FEATURE_PS2_KEYBOARD
|
||||
#define ps2_keyboard_data A3
|
||||
#define ps2_keyboard_clock 3 // this must be on an interrupt capable pin!
|
||||
#endif //FEATURE_PS2_KEYBOARD
|
||||
|
||||
// rotary encoder pins and options - rotary encoder code from Jim Balls M0CKE
|
||||
#ifdef FEATURE_ROTARY_ENCODER
|
||||
#define OPTION_ENCODER_HALF_STEP_MODE // Half-step mode?
|
||||
#define rotary_pin1 43 // CW Encoder Pin
|
||||
#define rotary_pin2 42 // CCW Encoder Pin
|
||||
#define OPTION_ENCODER_ENABLE_PULLUPS // define to enable weak pullups.
|
||||
#endif //FEATURE_ROTARY_ENCODER
|
||||
|
||||
#ifdef FEATURE_LED_RING
|
||||
#define led_ring_sdi A10 //2 //Data
|
||||
#define led_ring_clk A9 //3 //Clock
|
||||
#define led_ring_le A8 //4 //Latch
|
||||
#endif //FEATURE_LED_RING
|
||||
|
||||
#ifdef FEATURE_ALPHABET_SEND_PRACTICE
|
||||
#define correct_answer_led 0
|
||||
#define wrong_answer_led 0
|
||||
#endif //FEATURE_ALPHABET_SEND_PRACTICE
|
||||
|
||||
#ifdef FEATURE_PTT_INTERLOCK
|
||||
#define ptt_interlock 0 // this pin disables PTT and TX KEY
|
||||
#endif //FEATURE_PTT_INTERLOCK
|
||||
|
||||
#ifdef FEATURE_STRAIGHT_KEY
|
||||
#define pin_straight_key 52
|
||||
#endif //FEATURE_STRAIGHT_KEY
|
||||
|
||||
#ifdef FEATURE_CW_DECODER
|
||||
#define cw_decoder_pin A4//A11 //A5 //A3
|
||||
#ifdef OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||
#define cw_decoder_audio_input_pin A4 // this must be an analog pin!
|
||||
#endif //OPTION_CW_DECODER_GOERTZEL_AUDIO_DETECTOR
|
||||
#define cw_decoder_indicator 4
|
||||
#endif //FEATURE_CW_DECODER
|
||||
|
||||
|
||||
#if defined(FEATURE_COMPETITION_COMPRESSION_DETECTION)
|
||||
#define compression_detection_pin 13
|
||||
#endif //FEATURE_COMPETITION_COMPRESSION_DETECTION
|
||||
|
||||
#if defined(FEATURE_SLEEP)
|
||||
#define keyer_awake 0
|
||||
#endif
|
||||
|
||||
#if defined(FEATURE_CAPACITIVE_PADDLE_PINS)
|
||||
#define capactive_paddle_pin_inhibit_pin 0 // if this pin is defined and is set high, the capacitive paddle pins will switch to normal (non-capacitive) sensing mode
|
||||
#endif
|
||||
|
||||
#ifdef FEATURE_4x4_KEYPAD
|
||||
#define Row3 33
|
||||
#define Row2 32
|
||||
#define Row1 31
|
||||
#define Row0 30
|
||||
#define Col3 37
|
||||
#define Col2 36
|
||||
#define Col1 35
|
||||
#define Col0 34
|
||||
#endif
|
||||
|
||||
#ifdef FEATURE_3x4_KEYPAD
|
||||
#define Row3 33
|
||||
#define Row2 32
|
||||
#define Row1 31
|
||||
#define Row0 30
|
||||
#define Col2 36
|
||||
#define Col1 35
|
||||
#define Col0 34
|
||||
#endif
|
||||
|
||||
#ifdef 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
|
||||
#endif //FEATURE_SEQUENCER
|
||||
|
||||
#define ptt_input_pin 0
|
||||
|
||||
#define tx_inhibit_pin 0
|
||||
#define tx_pause_pin 0
|
||||
|
||||
#else
|
||||
|
||||
#error "Multiple pin_settings.h files included somehow..."
|
||||
|
||||
#endif //keyer_pin_settings_h
|
||||
|
|
@ -274,3 +274,5 @@
|
|||
|
||||
#define sidetone_volume_low_limit 10
|
||||
#define sidetone_volume_high_limit 500
|
||||
|
||||
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||
|
|
|
@ -294,3 +294,6 @@
|
|||
|
||||
#define sidetone_volume_low_limit 10
|
||||
#define sidetone_volume_high_limit 500
|
||||
|
||||
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||
|
||||
|
|
|
@ -0,0 +1,281 @@
|
|||
// Funtronics FK-11
|
||||
|
||||
// Initial and hardcoded settings
|
||||
#define initial_speed_wpm 26 // "factory default" keyer speed setting
|
||||
#define initial_command_mode_speed_wpm 20 // "factory default" command mode speed setting
|
||||
#define initial_sidetone_freq 600 // "factory default" sidetone frequency setting
|
||||
#define sidetone_hz_limit_low 299
|
||||
#define sidetone_hz_limit_high 2001
|
||||
#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 13 // Potentiometer WPM fully CCW
|
||||
#define initial_pot_wpm_high_value 35 // 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_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 lcd_i2c_address_mathertel_PCF8574 0x27 // I2C address of display
|
||||
#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 winkey_paddle_echo_buffer_decode_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 potentiometer_reading_threshold 1
|
||||
#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
|
||||
#define eeprom_write_time_ms 30000
|
||||
|
||||
#ifdef FEATURE_COMMAND_BUTTONS
|
||||
#define analog_buttons_number_of_buttons 5 // includes the command button (command button + 3 memory buttons = 4)
|
||||
#define analog_buttons_r1 10
|
||||
#define analog_buttons_r2 1
|
||||
#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 || defined(FEATURE_SO2R_BASE)
|
||||
#define WINKEY_DEFAULT_BAUD 9600
|
||||
#else
|
||||
#define WINKEY_DEFAULT_BAUD 1200
|
||||
#endif //OPTION_WINKEY_UCXLOG_9600_BAUD || FEATURE_SO2R_BASE
|
||||
// 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
|
||||
|
||||
#define WINKEY_RETURN_THIS_FOR_ADMIN_GET_CAL 0x16
|
||||
#define WINKEY_RETURN_THIS_FOR_ADMIN_PADDLE_A2D 0xEE
|
||||
#define WINKEY_RETURN_THIS_FOR_ADMIN_SPEED_A2D 0x00
|
||||
|
||||
#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 sd_card_spi_ss_line 4
|
||||
|
||||
#if defined(OPTION_DFROBOT_LCD_COMMAND_BUTTONS)
|
||||
|
||||
// For V1.1 board use these values
|
||||
#define dfrobot_btnRIGHT_analog 50
|
||||
#define dfrobot_btnUP_analog 250
|
||||
#define dfrobot_btnDOWN_analog 450
|
||||
#define dfrobot_btnLEFT_analog 650
|
||||
#define dfrobot_btnSELECT_analog 850
|
||||
|
||||
// For V1.0 board use these values
|
||||
// #define dfrobot_btnRIGHT_analog 50
|
||||
// #define dfrobot_btnUP_analog 195
|
||||
// #define dfrobot_btnDOWN_analog 380
|
||||
// #define dfrobot_btnLEFT_analog 555
|
||||
// #define dfrobot_btnSELECT_analog 790
|
||||
|
||||
// button to memory mappings (0 = command button, 1 = memory 1, 2 = memory 2, etc.)
|
||||
#define dfrobot_btnRIGHT 2
|
||||
#define dfrobot_btnUP 1
|
||||
#define dfrobot_btnDOWN 3
|
||||
#define dfrobot_btnLEFT 4
|
||||
#define dfrobot_btnSELECT 0
|
||||
#define dfrobot_btnNONE 255 // do not change
|
||||
|
||||
#endif
|
||||
|
||||
#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
|
||||
#define tx_inhibit_pin_active_state LOW
|
||||
#define tx_inhibit_pin_inactive_state HIGH
|
||||
#define tx_pause_pin_active_state LOW
|
||||
#define tx_pause_pin_inactive_state HIGH
|
||||
|
||||
#if defined(ARDUINO_MAPLE_MINI)
|
||||
#define button_value_factor 4095 //sp5iou contributed
|
||||
#else
|
||||
#define button_value_factor 1023
|
||||
#endif
|
||||
|
||||
#define farnsworth_timing_calibration 1.15
|
||||
|
||||
#define sidetone_volume_low_limit 10
|
||||
#define sidetone_volume_high_limit 500
|
||||
|
||||
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||
|
|
@ -281,3 +281,6 @@ GENERIC STM32F103C
|
|||
|
||||
#define sidetone_volume_low_limit 10
|
||||
#define sidetone_volume_high_limit 500
|
||||
|
||||
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||
|
||||
|
|
|
@ -274,3 +274,6 @@
|
|||
|
||||
#define sidetone_volume_low_limit 10
|
||||
#define sidetone_volume_high_limit 500
|
||||
|
||||
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||
|
||||
|
|
|
@ -273,3 +273,6 @@
|
|||
|
||||
#define sidetone_volume_low_limit 10
|
||||
#define sidetone_volume_high_limit 500
|
||||
|
||||
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||
|
||||
|
|
|
@ -286,3 +286,6 @@
|
|||
|
||||
#define sidetone_volume_low_limit 10
|
||||
#define sidetone_volume_high_limit 500
|
||||
|
||||
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||
|
||||
|
|
|
@ -279,3 +279,6 @@
|
|||
|
||||
#define sidetone_volume_low_limit 10
|
||||
#define sidetone_volume_high_limit 500
|
||||
|
||||
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||
|
||||
|
|
|
@ -276,4 +276,5 @@
|
|||
#define sidetone_volume_low_limit 10
|
||||
#define sidetone_volume_high_limit 500
|
||||
|
||||
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||
|
||||
|
|
|
@ -277,4 +277,6 @@
|
|||
#define sidetone_volume_low_limit 10
|
||||
#define sidetone_volume_high_limit 500
|
||||
|
||||
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||
|
||||
|
||||
|
|
|
@ -277,4 +277,6 @@
|
|||
#define sidetone_volume_low_limit 10
|
||||
#define sidetone_volume_high_limit 500
|
||||
|
||||
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||
|
||||
|
||||
|
|
|
@ -277,4 +277,6 @@
|
|||
#define sidetone_volume_low_limit 10
|
||||
#define sidetone_volume_high_limit 500
|
||||
|
||||
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||
|
||||
|
||||
|
|
|
@ -277,4 +277,5 @@
|
|||
#define sidetone_volume_low_limit 10
|
||||
#define sidetone_volume_high_limit 500
|
||||
|
||||
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||
|
||||
|
|
|
@ -264,3 +264,5 @@
|
|||
|
||||
#define sidetone_volume_low_limit 10
|
||||
#define sidetone_volume_high_limit 500
|
||||
|
||||
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||
|
|
|
@ -264,3 +264,6 @@
|
|||
|
||||
#define sidetone_volume_low_limit 10
|
||||
#define sidetone_volume_high_limit 500
|
||||
|
||||
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||
|
||||
|
|
|
@ -267,3 +267,6 @@
|
|||
|
||||
#define sidetone_volume_low_limit 10
|
||||
#define sidetone_volume_high_limit 500
|
||||
|
||||
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||
|
||||
|
|
|
@ -274,3 +274,6 @@
|
|||
|
||||
#define sidetone_volume_low_limit 10
|
||||
#define sidetone_volume_high_limit 500
|
||||
|
||||
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||
|
||||
|
|
|
@ -586,6 +586,9 @@
|
|||
#define sidetone_volume_low_limit 10
|
||||
#define sidetone_volume_high_limit 500
|
||||
|
||||
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||
|
||||
|
||||
#endif //TEST_SETTINGS_2
|
||||
|
||||
// ######## ######## ###### ########
|
||||
|
|
|
@ -325,4 +325,6 @@
|
|||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||
|
|
|
@ -265,3 +265,6 @@
|
|||
|
||||
#define sidetone_volume_low_limit 10
|
||||
#define sidetone_volume_high_limit 500
|
||||
|
||||
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||
|
||||
|
|
|
@ -273,3 +273,6 @@
|
|||
|
||||
#define sidetone_volume_low_limit 10
|
||||
#define sidetone_volume_high_limit 500
|
||||
|
||||
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||
|
||||
|
|
|
@ -309,4 +309,5 @@
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#define custom_startup_field "your custom text here" // an example could be callsign and name, eg. "AB1XYZ Bob", (or "Worlds best operator" which requires a 20 column display), string length shouldo be no more than the number of columns on the display
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue