diff --git a/ubitx_20/ubitx_20.ino b/ubitx_20/ubitx_20.ino index 098e2af..f36c00e 100644 --- a/ubitx_20/ubitx_20.ino +++ b/ubitx_20/ubitx_20.ino @@ -382,7 +382,7 @@ void setNextHamBandFreq(unsigned long f, char moveDirection) resultFreq = (unsigned long)(hamBandRange[(unsigned char)findedIndex][0]) * 1000; setFrequency(resultFreq); - byteWithFreqToMode(loadMode); + byteToMode(loadMode, 1); } void saveBandFreqByIndex(unsigned long f, unsigned long mode, char bandIndex) { @@ -537,12 +537,12 @@ void startTx(byte txMode, byte isDisplayUpdate){ if (vfoActive == VFO_B) { vfoActive = VFO_A; frequency = vfoA; - byteToMode(vfoA_mode); + byteToMode(vfoA_mode, 0); } else if (vfoActive == VFO_A){ vfoActive = VFO_B; frequency = vfoB; - byteToMode(vfoB_mode); + byteToMode(vfoB_mode, 0); } setFrequency(frequency); @@ -597,12 +597,12 @@ void stopTx(){ if (vfoActive == VFO_B){ vfoActive = VFO_A; frequency = vfoA; - byteToMode(vfoA_mode); + byteToMode(vfoA_mode, 0); } else if (vfoActive == VFO_A){ vfoActive = VFO_B; frequency = vfoB; - byteToMode(vfoB_mode); + byteToMode(vfoB_mode, 0); } setFrequency(frequency); } //end of else @@ -755,27 +755,8 @@ void doRIT(){ updateDisplay(); } } - /* -void doIFShift(){ - int knob = enc_read(); - unsigned long old_freq = frequency; - - if (knob != 0) - { - if (knob < 0) - ifShiftValue -= 1l; - else if (knob > 0) - ifShiftValue += 1; - - updateLine2Buffer(1); - setFrequency(frequency); - } -} -*/ - -/** - save Frequency and mode to eeprom + save Frequency and mode to eeprom for Auto Save with protected eeprom cycle, by kd8cec */ void storeFrequencyAndMode(byte saveType) { @@ -807,6 +788,7 @@ void storeFrequencyAndMode(byte saveType) } } +//calculate step size from 1 byte, compatible uBITX Manager, by KD8CEC unsigned int byteToSteps(byte srcByte) { byte powerVal = (byte)(srcByte >> 6); unsigned int baseVal = srcByte & 0x3F; @@ -1019,12 +1001,12 @@ void initSettings(){ if (vfoA > 35000000l || 3500000l > vfoA) { vfoA = 7150000l; - vfoA_mode = 2; + vfoA_mode = 2; //LSB } if (vfoB > 35000000l || 3500000l > vfoB) { vfoB = 14150000l; - vfoB_mode = 3; + vfoB_mode = 3; //USB } //end of original code section @@ -1100,7 +1082,7 @@ void setup() //Serial.begin(9600); lcd.begin(16, 2); - printLineF(1, F("CECBT v0.33")); + printLineF(1, F("CECBT v0.35")); Init_Cat(38400, SERIAL_8N1); initMeter(); //not used in this build @@ -1119,7 +1101,7 @@ void setup() initPorts(); - byteToMode(vfoA_mode); + byteToMode(vfoA_mode, 0); initOscillators(); frequency = vfoA; @@ -1132,13 +1114,11 @@ void setup() } -/** - * The loop checks for keydown, ptt, function button and tuning. - */ //for debug int dbgCnt = 0; byte flasher = 0; +//Auto save Frequency and Mode with Protected eeprom life by KD8CEC void checkAutoSaveFreqMode() { //when tx or ritOn, disable auto save diff --git a/ubitx_20/ubitx_idle.ino b/ubitx_20/ubitx_idle.ino index 2e1c782..974aef6 100644 --- a/ubitx_20/ubitx_idle.ino +++ b/ubitx_20/ubitx_idle.ino @@ -17,7 +17,7 @@ along with this program. If not, see . **************************************************************************/ -byte line2Buffer[16]; +char line2Buffer[16]; //KD8CEC 200Hz ST //L14.150 200Hz ST //U14.150 +150khz @@ -53,8 +53,11 @@ void updateLine2Buffer(char isDirectCall) } return; - } - + } //end of ritOn display + + //====================================================== + //other VFO display + //====================================================== if (vfoActive == VFO_B) { tmpFreq = vfoA; @@ -82,23 +85,23 @@ void updateLine2Buffer(char isDirectCall) } //EXAMPLE #1 - if ((displayOption1 & 0x04) == 0x00) + if ((displayOption1 & 0x04) == 0x00) //none scroll display line2Buffer[6] = 'k'; else { //example #2 - if (freqScrollPosition++ > 18) + if (freqScrollPosition++ > 18) //none scroll display time { line2Buffer[6] = 'k'; if (freqScrollPosition > 25) freqScrollPosition = -1; } - else + else //scroll frequency { line2Buffer[10] = 'H'; line2Buffer[11] = 'z'; - if (freqScrollPosition < 7) + if (freqScrollPosition < 7) { for (int i = 11; i >= 0; i--) if (i - (7 - freqScrollPosition) >= 0) @@ -115,10 +118,10 @@ void updateLine2Buffer(char isDirectCall) line2Buffer[i] = ' '; } } - } + } //scroll + line2Buffer[7] = ' '; } //check direct call by encoder - if (isIFShift) { @@ -152,24 +155,38 @@ void updateLine2Buffer(char isDirectCall) if (isDirectCall == 1) //if call by encoder (not scheduler), immediate print value printLine2(line2Buffer); - } - else + } // end of display IF + else // step display { if (isDirectCall != 0) return; - + + memset(&line2Buffer[8], ' ', 8); //Step - byte tmpStep = arTuneStep[tuneStepIndex -1]; - for (int i = 10; i >= 8; i--) { + long tmpStep = arTuneStep[tuneStepIndex -1]; + + byte isStepKhz = 0; + if (tmpStep >= 1000) + { + isStepKhz = 2; + } + + for (int i = 10; i >= 8 - isStepKhz; i--) { if (tmpStep > 0) { - line2Buffer[i] = tmpStep % 10 + 0x30; + line2Buffer[i + isStepKhz] = tmpStep % 10 + 0x30; tmpStep /= 10; } else - line2Buffer[i] = ' '; + line2Buffer[i +isStepKhz] = ' '; + } + //if (isStepKhz == 1) + // line2Buffer[10] = 'k'; + + if (isStepKhz == 0) + { + line2Buffer[11] = 'H'; + line2Buffer[12] = 'z'; } - line2Buffer[11] = 'H'; - line2Buffer[12] = 'z'; line2Buffer[13] = ' '; //if ( @@ -215,6 +232,9 @@ void idle_process() //space for user graphic display if (menuOn == 0) { + if ((displayOption1 & 0x10) == 0x10) //always empty topline + return; + //if line2DisplayStatus == 0 <-- this condition is clear Line, you can display any message if (line2DisplayStatus == 0 || (((displayOption1 & 0x04) == 0x04) && line2DisplayStatus == 2)) { if (checkCount++ > 1) diff --git a/ubitx_20/ubitx_menu.ino b/ubitx_20/ubitx_menu.ino index 298701a..12fabfd 100644 --- a/ubitx_20/ubitx_menu.ino +++ b/ubitx_20/ubitx_menu.ino @@ -13,6 +13,36 @@ #define printLineF1(x) (printLineF(1, x)) #define printLineF2(x) (printLineF(0, x)) +void FrequencyToVFO(byte isSaveFreq) +{ + //Save Frequency & Mode Information + if (vfoActive == VFO_A) + { + vfoA = frequency; + vfoA_mode = modeToByte(); + + if (isSaveFreq) + storeFrequencyAndMode(1); + } + else + { + vfoB = frequency; + vfoB_mode = modeToByte(); + + if (isSaveFreq) + storeFrequencyAndMode(2); + } +} + +void menuClearExit(int delayTime) +{ + if (delayTime > 0) + delay_background(delayTime, 0); + + printLine2ClearAndUpdate(); + menuOn = 0; +} + //Ham band move by KD8CEC void menuBand(int btn){ int knob = 0; @@ -27,8 +57,7 @@ void menuBand(int btn){ printLineF2(F("Press to confirm")); //wait for the button menu select button to be lifted) while (btnDown()) { - delay(50); - Check_Cat(0); //To prevent disconnections + delay_background(50, 0); if (btnPressCount++ > 20) { btnPressCount = 0; if (tuneTXType > 0) { //Just toggle 0 <-> 2, if tuneTXType is 100, 100 -> 0 -> 2 @@ -57,23 +86,13 @@ void menuBand(int btn){ } } - delay(50); + //delay(50); ritDisable(); while(!btnDown()){ knob = enc_read(); if (knob != 0){ - /* - if (band > 3 && knob < 0) - band--; - if (band < 30 && knob > 0) - band++; - if (band > 10) - isUSB = true; - else - isUSB = false; - setFrequency(((unsigned long)band * 1000000l) + offset); */ if (tuneTXType == 2 || tuneTXType == 3 || tuneTXType == 102 || tuneTXType == 103) { //only ham band move if (knob < 0) { if (stepChangeCount-- < -3) { @@ -87,9 +106,7 @@ void menuBand(int btn){ stepChangeCount = 0; } } - - //setFrequency(frequency + 200000l); - } + } //end of only ham band move else { //original source if (knob < 0 && frequency > 3000000l) setFrequency(frequency - 200000l); @@ -105,19 +122,21 @@ void menuBand(int btn){ updateDisplay(); } - delay(20); - Check_Cat(0); //To prevent disconnections + delay_background(20, 0); } +/* while(btnDown()) { delay(50); Check_Cat(0); //To prevent disconnections } - - delay(50); - - printLine2ClearAndUpdate(); - menuOn = 0; +*/ + FrequencyToVFO(1); + + //printLine2ClearAndUpdate(); + //delay_background(500, 0); + //menuOn = 0; + menuClearExit(500); } //Convert Mode, Number by KD8CEC @@ -141,7 +160,9 @@ byte modeToByte(){ } //Convert Number to Mode by KD8CEC -void byteToMode(byte modeValue){ +//autoSetModebyFreq : 0 +//autoSetModebyFreq : 1, if (modValue is not set, set mode by frequency) +void byteToMode(byte modeValue, byte autoSetModebyFreq){ if (modeValue == 4) cwMode = 1; else if (modeValue == 5) @@ -151,11 +172,14 @@ void byteToMode(byte modeValue){ cwMode = 0; if (modeValue == 3) isUSB = 1; + else if (autoSetModebyFreq == 1 && (modeValue == 0)) + isUSB = (frequency > 10000000l) ? true : false; else isUSB = 0; } } +/* //Convert Number to Mode by KD8CEC void byteWithFreqToMode(byte modeValue){ if (modeValue == 4) @@ -172,99 +196,9 @@ void byteWithFreqToMode(byte modeValue){ isUSB = 0; } } - -//VFO Toggle and save VFO Information, modified by KD8CEC -void menuVfoToggle(int btn, char isUseDelayTime) -{ - if (!btn){ - if (vfoActive == VFO_A) - printLineF2(F("Select VFO B?")); - else - printLineF2(F("Select VFO A?")); - } - else { - if (vfoActive == VFO_B){ - vfoB = frequency; - vfoB_mode = modeToByte(); - storeFrequencyAndMode(2); //vfoB -> eeprom - - vfoActive = VFO_A; - frequency = vfoA; - saveCheckFreq = frequency; - byteToMode(vfoA_mode); - printLineF2(F("Selected VFO A")); - } - else { - vfoA = frequency; - vfoA_mode = modeToByte(); - storeFrequencyAndMode(1); //vfoA -> eeprom - - vfoActive = VFO_B; - frequency = vfoB; - saveCheckFreq = frequency; - byteToMode(vfoB_mode); - printLineF2(F("Selected VFO B")); - } - - ritDisable(); - setFrequency(frequency); - - if (isUseDelayTime == 1) //Found Issue in wsjt-x Linux 32bit - delay_background(500, 0); - - printLine2ClearAndUpdate(); - //exit the menu - menuOn = 0; - } -} - -void menuRitToggle(int btn){ - if (!btn){ - if (ritOn == 1) - printLineF2(F("RIT:On, Off?")); - else - printLineF2(F("RIT:Off, On?")); - } - else { - if (ritOn == 0){ - printLineF2(F("RIT is ON")); - //enable RIT so the current frequency is used at transmit - ritEnable(frequency); - } - else{ - printLineF2(F("RIT is OFF")); - ritDisable(); - } - menuOn = 0; - delay_background(500, 0); - printLine2ClearAndUpdate(); - } -} - -/* -void menuIFSToggle(int btn){ - if (!btn){ - if (isIFShift == 1) - printLineF2(F("IF Shift:On, Off?")); - else - printLineF2(F("IF Shift:Off, On?")); - } - else { - if (isIFShift == 0){ - printLineF2(F("IF Shift is ON")); - isIFShift = 1; - } - else{ - printLineF2(F("IF Shift is OFF")); - isIFShift = 0; - } - menuOn = 0; - delay_background(500, 0); - printLine2ClearAndUpdate(); - } -} */ -void menuIFSToggle(int btn){ + +void menuIFSSetup(int btn){ int knob = 0; char needApplyChangeValue = 1; @@ -275,18 +209,18 @@ void menuIFSToggle(int btn){ printLineF2(F("IF Shift:Off, On?")); } else { - if (isIFShift == 0){ - printLineF2(F("IF Shift is ON")); - delay_background(500, 0); - isIFShift = 1; - } + //if (isIFShift == 0){ + //printLineF2(F("IF Shift is ON")); + //delay_background(500, 0); + isIFShift = 1; + //} delay_background(500, 0); updateLine2Buffer(1); setFrequency(frequency); //Off or Change Value - while(!btnDown() && digitalRead(PTT) == HIGH){ + while(!btnDown() ){ if (needApplyChangeValue ==1) { updateLine2Buffer(1); @@ -313,7 +247,7 @@ void menuIFSToggle(int btn){ delay_background(500, 0); //for check Long Press function key - if (btnDown() || digitalRead(PTT) == LOW || ifShiftValue == 0) + if (btnDown() || ifShiftValue == 0) { isIFShift = 0; printLineF2(F("IF Shift is OFF")); @@ -321,38 +255,12 @@ void menuIFSToggle(int btn){ delay_background(500, 0); } - menuOn = 0; - //delay_background(500, 0); - printLine2ClearAndUpdate(); + //menuOn = 0; + //printLine2ClearAndUpdate(); + menuClearExit(0); } } - -/* -void menuSidebandToggle(int btn){ - if (!btn){ - if (isUSB == true) - printLineF2(F("Select LSB?")); - else - printLineF2(F("Select USB?")); - } - else { - cwMode = 0; - if (isUSB == true){ - isUSB = false; - printLineF2(F("LSB Selected")); - } - else { - isUSB = true; - printLineF2(F("USB Selected")); - } - setFrequency(frequency); - delay_background(500, 0); - printLine2ClearAndUpdate(); - menuOn = 0; - } -} -*/ void menuSelectMode(int btn){ int knob = 0; int selectModeType = 0; @@ -412,8 +320,7 @@ void menuSelectMode(int btn){ } if (beforeMode != selectModeType) { - printLineF1(F("Changed Mode")); - + //printLineF1(F("Changed Mode")); if (selectModeType == 0) { cwMode = 0; isUSB = 0; } @@ -427,19 +334,7 @@ void menuSelectMode(int btn){ cwMode = 2; } - //Save Frequency & Mode Information - if (vfoActive == VFO_A) - { - vfoA = frequency; - vfoA_mode = modeToByte(); - storeFrequencyAndMode(1); - } - else - { - vfoB = frequency; - vfoB_mode = modeToByte(); - storeFrequencyAndMode(2); - } + FrequencyToVFO(1); } if (cwMode == 0) @@ -448,73 +343,14 @@ void menuSelectMode(int btn){ si5351bx_setfreq(0, cwmCarrier + (isIFShift ? ifShiftValue : 0)); //set back the carrier oscillator anyway, cw tx switches it off setFrequency(frequency); - delay_background(500, 0); - printLine2ClearAndUpdate(); - menuOn = 0; - } -} -void menuSplitOnOff(int btn){ - if (!btn){ - if (splitOn == 0) - printLineF2(F("Split On?")); - else - printLineF2(F("Split Off?")); - } - else { - if (splitOn == 1){ - splitOn = 0; - printLineF2(F("Split Off!")); - } - else { - splitOn = 1; - if (ritOn == 1) - ritOn = 0; - printLineF2(F("Split On!")); - } - delay_background(500, 0); - printLine2ClearAndUpdate(); - menuOn = 0; + //delay_background(500, 0); + //printLine2ClearAndUpdate(); + //menuOn = 0; + menuClearExit(500); } } -/* -//Select CW Key Type by KD8CEC -void menuSetupKeyType(int btn){ - if (!btn && digitalRead(PTT) == HIGH){ - if (Iambic_Key) - printLineF2(F("Key: Straight?")); - else - printLineF2(F("Key: Fn=A, PTT=B")); - } - else { - if (Iambic_Key) - { - printLineF2(F("Straight Key!")); - Iambic_Key = false; - } - else - { - Iambic_Key = true; - if (btn) - { - keyerControl &= ~IAMBICB; - printLineF2(F("IAMBICA Key!")); - } - else - { - keyerControl |= IAMBICB; - printLineF2(F("IAMBICB Key!")); - } - } - - delay_background(500, 0); - printLine2ClearAndUpdate(); - menuOn = 0; - } -} -*/ - //Select CW Key Type by KD8CEC void menuSetupKeyType(int btn){ int knob = 0; @@ -572,10 +408,11 @@ void menuSetupKeyType(int btn){ else keyerControl |= IAMBICB; } - delay_background(2000, 0); - - printLine2ClearAndUpdate(); - menuOn = 0; + + //delay_background(2000, 0); + //printLine2ClearAndUpdate(); + //menuOn = 0; + menuClearExit(1000); } } @@ -655,10 +492,109 @@ void menuADCMonitor(int btn){ delay_background(200, 0); } //end of while - printLine2ClearAndUpdate(); - menuOn = 0; + //printLine2ClearAndUpdate(); + //menuOn = 0; + menuClearExit(0); } +//VFO Toggle and save VFO Information, modified by KD8CEC +void menuVfoToggle(int btn, char isUseDelayTime) +{ + if (!btn){ + if (vfoActive == VFO_A) + printLineF2(F("Select VFO B?")); + else + printLineF2(F("Select VFO A?")); + } + else { + FrequencyToVFO(1); + + if (vfoActive == VFO_B){ + //vfoB = frequency; + //vfoB_mode = modeToByte(); + //storeFrequencyAndMode(2); //vfoB -> eeprom + + vfoActive = VFO_A; + frequency = vfoA; + saveCheckFreq = frequency; + byteToMode(vfoA_mode, 0); + //printLineF2(F("Selected VFO A")); + } + else { + //vfoA = frequency; + //vfoA_mode = modeToByte(); + //storeFrequencyAndMode(1); //vfoA -> eeprom + + vfoActive = VFO_B; + frequency = vfoB; + saveCheckFreq = frequency; + byteToMode(vfoB_mode, 0); + //printLineF2(F("Selected VFO B")); + } + + ritDisable(); + setFrequency(frequency); + + //if (isUseDelayTime == 1) //Found Issue in wsjt-x Linux 32bit + // delay_background(500, 0); + + //printLine2ClearAndUpdate(); + //menuOn = 0; + menuClearExit(0); + } +} + +void menuRitToggle(int btn){ + if (!btn){ + if (ritOn == 1) + printLineF2(F("RIT:On, Off?")); + else + printLineF2(F("RIT:Off, On?")); + } + else { + if (ritOn == 0){ + printLineF2(F("RIT is ON")); + //enable RIT so the current frequency is used at transmit + ritEnable(frequency); + } + else{ + printLineF2(F("RIT is OFF")); + ritDisable(); + } + //delay_background(500, 0); + //printLine2ClearAndUpdate(); + //menuOn = 0; + menuClearExit(500); + } +} + +void menuSplitOnOff(int btn){ + if (!btn){ + if (splitOn == 0) + printLineF2(F("Split On?")); + else + printLineF2(F("Split Off?")); + } + else { + if (splitOn == 1){ + splitOn = 0; + printLineF2(F("Split Off!")); + } + else { + splitOn = 1; + if (ritOn == 1) + ritOn = 0; + printLineF2(F("Split On!")); + } + + //delay_background(500, 0); + //printLine2ClearAndUpdate(); + //menuOn = 0; + menuClearExit(500); + } +} + + //Function to disbled transmission //by KD8CEC void menuTxOnOff(int btn, byte optionType){ @@ -677,9 +613,11 @@ void menuTxOnOff(int btn, byte optionType){ isTxType &= ~(optionType); printLineF2(F("TX ON!")); } - delay_background(500, 0); - printLine2ClearAndUpdate(); - menuOn = 0; + + //delay_background(500, 0); + //printLine2ClearAndUpdate(); + //menuOn = 0; + menuClearExit(500); } } @@ -702,21 +640,19 @@ void menuSetup(int btn){ modeCalibrate = false; printLineF2(F("Setup:Off")); } - delay_background(2000, 0); - printLine2Clear(); - menuOn = 0; + //delay_background(2000, 0); + //printLine2Clear(); + //menuOn = 0; + menuClearExit(1000); } } void menuExit(int btn){ - if (!btn){ printLineF2(F("Exit Menu?")); } - else{ - printLine2ClearAndUpdate(); - menuOn = 0; - } + else + menuClearExit(0); } void menuCWSpeed(int btn){ @@ -768,10 +704,11 @@ void menuCWSpeed(int btn){ printLineF2(F("CW Speed set!")); cwSpeed = 1200/wpm; EEPROM.put(CW_SPEED, cwSpeed); - delay_background(2000, 0); //} - printLine2ClearAndUpdate(); - menuOn = 0; + //delay_background(2000, 0); + //printLine2ClearAndUpdate(); + //menuOn = 0; + menuClearExit(1000); } //Builtin CW Keyer Logic by KD8CEC @@ -841,10 +778,11 @@ void menuSetupCwDelay(int btn){ printLineF2(F("CW Delay set!")); cwDelayTime = tmpCWDelay / 10; EEPROM.put(CW_DELAY, cwDelayTime); - delay_background(2000, 0); + //delay_background(2000, 0); //} - printLine2ClearAndUpdate(); - menuOn = 0; + //printLine2ClearAndUpdate(); + //menuOn = 0; + menuClearExit(1000); } //CW Time delay by KD8CEC @@ -890,10 +828,11 @@ void menuSetupTXCWInterval(int btn){ printLineF2(F("CW Start set!")); delayBeforeCWStartTime = tmpTXCWInterval / 2; EEPROM.put(CW_START, delayBeforeCWStartTime); - delay_background(2000, 0); + //delay_background(2000, 0); //} - printLine2ClearAndUpdate(); - menuOn = 0; + //printLine2ClearAndUpdate(); + //menuOn = 0; + menuClearExit(1000); } @@ -976,7 +915,8 @@ void factoryCalibration(int btn){ while(btnDown()) delay(50); - delay(100); + + menuClearExit(100); } void menuSetupCalibration(int btn){ @@ -1040,8 +980,9 @@ void menuSetupCalibration(int btn){ initOscillators(); //si5351_set_calibration(calibration); setFrequency(frequency); - printLine2ClearAndUpdate(); - menuOn = 0; + //printLine2ClearAndUpdate(); + //menuOn = 0; + menuClearExit(0); } void printCarrierFreq(unsigned long freq){ @@ -1114,8 +1055,9 @@ void menuSetupCarrier(int btn){ si5351bx_setfreq(0, cwmCarrier); //set back the carrier oscillator anyway, cw tx switches it off setFrequency(frequency); - printLine2ClearAndUpdate(); - menuOn = 0; + //printLine2ClearAndUpdate(); + //menuOn = 0; + menuClearExit(0); } //Append by KD8CEC @@ -1150,8 +1092,9 @@ void menuSetupCWCarrier(int btn){ si5351bx_setfreq(0, cwmCarrier); printCarrierFreq(cwmCarrier); - Check_Cat(0); //To prevent disconnections - delay(100); + //Check_Cat(0); //To prevent disconnections + //delay(100); + delay_background(100, 0); } //save the setting @@ -1168,10 +1111,12 @@ void menuSetupCWCarrier(int btn){ else si5351bx_setfreq(0, cwmCarrier); //set back the carrier oscillator anyway, cw tx switches it off - setFrequency(frequency); - printLine2ClearAndUpdate(); - menuOn = 0; + setFrequency(frequency); + //printLine2ClearAndUpdate(); + //menuOn = 0; + menuClearExit(0); } + //Modified by KD8CEC void menuSetupCwTone(int btn){ int knob = 0; @@ -1204,8 +1149,9 @@ void menuSetupCwTone(int btn){ itoa(sideTone, b, 10); printLine2(b); - delay(100); - Check_Cat(0); //To prevent disconnections + //delay(100); + //Check_Cat(0); //To prevent disconnections + delay_background(100, 0); } noTone(CW_TONE); //save the setting @@ -1217,8 +1163,9 @@ void menuSetupCwTone(int btn){ else sideTone = prev_sideTone; - printLine2ClearAndUpdate(); - menuOn = 0; + //printLine2ClearAndUpdate(); + //menuOn = 0; + menuClearExit(0); } //Lock Dial move by KD8CEC @@ -1256,8 +1203,9 @@ void doMenu(){ //Appened Lines by KD8CEC for Adjust Tune step and Set Dial lock while(btnDown()){ - delay(50); - Check_Cat(0); //To prevent disconnections + //delay(50); + //Check_Cat(0); //To prevent disconnections + delay_background(50, 0); if (btnDownTimeCount++ == (PRESS_ADJUST_TUNE / 50)) { //Set Tune Step printLineF2(F("Set Tune Step?")); @@ -1280,8 +1228,9 @@ void doMenu(){ while (digitalRead(PTT) == HIGH && !btnDown()) { - Check_Cat(0); //To prevent disconnections - delay(50); //debounce + //Check_Cat(0); //To prevent disconnections + //delay(50); //debounce + delay_background(50, 0); if (isNeedDisplay) { strcpy(b, "Tune Step:"); @@ -1348,7 +1297,7 @@ void doMenu(){ else if (select < 40) menuRitToggle(btnState); else if (select < 50) - menuIFSToggle(btnState); + menuIFSSetup(btnState); else if (select < 60) menuCWSpeed(btnState); else if (select < 70) @@ -1385,9 +1334,8 @@ void doMenu(){ //debounce the button while(btnDown()){ - delay(50); - Check_Cat(0); //To prevent disconnections + delay_background(50, 0); //To prevent disconnections } - delay(50); + //delay(50); } diff --git a/ubitx_20/ubitx_ui.ino b/ubitx_20/ubitx_ui.ino index f415268..5259bf1 100644 --- a/ubitx_20/ubitx_ui.ino +++ b/ubitx_20/ubitx_ui.ino @@ -235,7 +235,6 @@ char byteToChar(byte srcByte){ void updateDisplay() { // tks Jack Purdum W8TEE // replaced fsprint commmands by str commands for code size reduction - // replace code for Frequency numbering error (alignment, point...) by KD8CEC int i; unsigned long tmpFreq = frequency; //