Optimize codes
This commit is contained in:
		| @@ -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 | ||||
|   | ||||
| @@ -17,7 +17,7 @@ | ||||
|    along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
|  | ||||
| **************************************************************************/ | ||||
| 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,18 +85,18 @@ 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'; | ||||
| @@ -115,11 +118,11 @@ void updateLine2Buffer(char isDirectCall) | ||||
|               line2Buffer[i] = ' '; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|     } //scroll | ||||
|      | ||||
|     line2Buffer[7] = ' '; | ||||
|   } //check direct call by encoder | ||||
|    | ||||
|    | ||||
|   if (isIFShift) | ||||
|   { | ||||
|     if (isDirectCall == 1) | ||||
| @@ -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[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) | ||||
|   | ||||
| @@ -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 | ||||
|   } | ||||
| */   | ||||
|   FrequencyToVFO(1); | ||||
|  | ||||
|   delay(50); | ||||
|    | ||||
|   printLine2ClearAndUpdate(); | ||||
|   menuOn = 0; | ||||
|   //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); | ||||
|       //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; | ||||
|  | ||||
|     //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; | ||||
|   } | ||||
| } | ||||
|  | ||||
| /* | ||||
| //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 | ||||
| @@ -1169,9 +1112,11 @@ void menuSetupCWCarrier(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); | ||||
| } | ||||
|  | ||||
| //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); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -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; // | ||||
|   | ||||
		Reference in New Issue
	
	Block a user