diff --git a/ubitx_20/cat_libs.ino b/ubitx_20/cat_libs.ino index 85a4111..c9dca39 100644 --- a/ubitx_20/cat_libs.ino +++ b/ubitx_20/cat_libs.ino @@ -109,7 +109,8 @@ void CatSetFreq(byte fromType) //#define BCD_LEN 9 //PROTOCOL : 0x03 //Computer <-(frequency)-> TRCV CAT_BUFF -void CatGetFreqMode(unsigned long freq, byte fromType) +//void CatGetFreqMode(unsigned long freq, byte fromType) +void CatGetFreqMode(unsigned long freq) //for remove warning messages { int i; byte tmpValue; @@ -149,15 +150,21 @@ void CatGetFreqMode(unsigned long freq, byte fromType) SendCatData(5); } -void CatSetSplit(boolean isSplit, byte fromType) +//void CatSetSplit(boolean isSplit, byte fromType) +void CatSetSplit(boolean isSplit) //for remove warning messages { - + if (isSplit) + splitOn = 1; + else + splitOn = 0; + Serial.write(ACK); } void CatSetPTT(boolean isPTTOn, byte fromType) { - if (fromType == 2 || fromType == 3) { + // + if ((!inTx) && (fromType == 2 || fromType == 3)) { Serial.write(ACK); return; } @@ -193,7 +200,7 @@ void CatSetPTT(boolean isPTTOn, byte fromType) void CatVFOToggle(boolean isSendACK, byte fromType) { if (fromType != 2 && fromType != 3) { - menuVfoToggle(1, 0); + menuVfoToggle(1); } if (isSendACK) @@ -232,7 +239,8 @@ void CatSetMode(byte tmpMode, byte fromType) } //Read EEProm by uBITX Manager Software -void ReadEEPRom(byte fromType) +//void ReadEEPRom(byte fromType) +void ReadEEPRom() //for remove warnings. { //5BYTES //CAT_BUFF[0] [1] [2] [3] [4] //4 COMMAND @@ -255,7 +263,8 @@ void ReadEEPRom(byte fromType) } //Write just proecess 1byes -void WriteEEPRom(byte fromType) +//void WriteEEPRom(byte fromType) +void WriteEEPRom(void) //for remove warning { //5BYTES uint16_t eepromStartIndex = CAT_BUFF[0] + CAT_BUFF[1] * 256; @@ -275,7 +284,8 @@ void WriteEEPRom(byte fromType) } } -void ReadEEPRom_FT817(byte fromType) +//void ReadEEPRom_FT817(byte fromType) +void ReadEEPRom_FT817(void) //for remove warnings { byte temp0 = CAT_BUFF[0]; byte temp1 = CAT_BUFF[1]; @@ -601,7 +611,8 @@ void WriteEEPRom_FT817(byte fromType) Serial.write(ACK); } -void CatRxStatus(byte fromType) +//void CatRxStatus(byte fromType) +void CatRxStatus(void) //for remove warning { byte sMeterValue = 1; @@ -621,7 +632,8 @@ void CatRxStatus(byte fromType) } -void CatTxStatus(byte fromType) +//void CatTxStatus(byte fromType) +void CatTxStatus(void) //for remove warning { boolean isHighSWR = false; boolean isSplitOn = false; @@ -722,11 +734,11 @@ void Check_Cat(byte fromType) case 0x02 : //Split On case 0x82: //Split Off - CatSetSplit(CAT_BUFF[4] == 0x02, fromType); + CatSetSplit(CAT_BUFF[4] == 0x02); break; case 0x03 : //Read Frequency and mode - CatGetFreqMode(frequency, fromType); + CatGetFreqMode(frequency); break; case 0x07 : //Set Operating Mode @@ -743,24 +755,24 @@ void Check_Cat(byte fromType) break; case 0xDB: //Read uBITX EEPROM Data - ReadEEPRom(fromType); //Call by uBITX Manager Program + ReadEEPRom(); //Call by uBITX Manager Program break; case 0xBB: //Read FT-817 EEPROM Data (for comfirtable) - ReadEEPRom_FT817(fromType); + ReadEEPRom_FT817(); break; case 0xDC: //Write uBITX EEPROM Data - WriteEEPRom(fromType); //Call by uBITX Manager Program + WriteEEPRom(); //Call by uBITX Manager Program break; case 0xBC: //Write FT-817 EEPROM Data (for comfirtable) WriteEEPRom_FT817(fromType); break; case 0xE7 : //Read RX Status - CatRxStatus(fromType); + CatRxStatus(); break; case 0xF7: //Read TX Status - CatTxStatus(fromType); + CatTxStatus(); break; default: /* diff --git a/ubitx_20/ubitx_20.ino b/ubitx_20/ubitx_20.ino index 20abc2e..c0768e6 100644 --- a/ubitx_20/ubitx_20.ino +++ b/ubitx_20/ubitx_20.ino @@ -156,10 +156,10 @@ int count = 0; //to generally count ticks, loops, etc #define VFO_B_MODE 257 #define CW_DELAY 258 #define CW_START 259 -#define HAM_BAND_COUNT 260 // -#define TX_TUNE_TYPE 261 // -#define HAM_BAND_RANGE 262 //FROM (2BYTE) TO (2BYTE) * 10 = 40byte -#define HAM_BAND_FREQS 302 //40, 1 BAND = 4Byte most bit is mode +#define HAM_BAND_COUNT 260 // +#define TX_TUNE_TYPE 261 // +#define HAM_BAND_RANGE 262 //FROM (2BYTE) TO (2BYTE) * 10 = 40byte +#define HAM_BAND_FREQS 302 //40, 1 BAND = 4Byte most bit is mode #define TUNING_STEP 342 //TUNING STEP * 6 (index 1 + STEPS 5) //1STEP : @@ -696,7 +696,6 @@ byte lastMovedirection = 0; //0 : stop, 1 : cw, 2 : ccw void doTuningWithThresHold(){ int s = 0; unsigned long prev_freq; - long incdecValue = 0; if ((vfoActive == VFO_A && ((isDialLock & 0x01) == 0x01)) || (vfoActive == VFO_B && ((isDialLock & 0x02) == 0x02))) @@ -908,13 +907,13 @@ void initSettings(){ if ((3 < tuneTXType && tuneTXType < 100) || 103 < tuneTXType || useHamBandCount < 1 || findedValidValueCount < 5) { tuneTXType = 2; - //if empty band Information, auto insert default region 1 frequency range + //if empty band Information, auto insert default region 2 frequency range //This part is made temporary for people who have difficulty setting up, so can remove it when you run out of memory. useHamBandCount = 10; hamBandRange[0][0] = 1810; hamBandRange[0][1] = 2000; hamBandRange[1][0] = 3500; hamBandRange[1][1] = 3800; hamBandRange[2][0] = 5351; hamBandRange[2][1] = 5367; - hamBandRange[3][0] = 7000; hamBandRange[3][1] = 7300; //region 1 + hamBandRange[3][0] = 7000; hamBandRange[3][1] = 7300; //region 2 hamBandRange[4][0] = 10100; hamBandRange[4][1] = 10150; hamBandRange[5][0] = 14000; hamBandRange[5][1] = 14350; hamBandRange[6][0] = 18068; hamBandRange[6][1] = 18168; @@ -1086,7 +1085,7 @@ void setup() //Serial.begin(9600); lcd.begin(16, 2); - printLineF(1, F("CECBT v0.35")); + printLineF(1, F("CECBT v1.01")); Init_Cat(38400, SERIAL_8N1); initMeter(); //not used in this build @@ -1140,6 +1139,7 @@ void checkAutoSaveFreqMode() //check time for Frequency auto save if (millis() - saveCheckTime > saveIntervalSec * 1000) { + /* if (vfoActive == VFO_A) { vfoA = frequency; @@ -1152,6 +1152,8 @@ void checkAutoSaveFreqMode() vfoB_mode = modeToByte(); storeFrequencyAndMode(2); } + */ + FrequencyToVFO(1); } } } diff --git a/ubitx_20/ubitx_idle.ino b/ubitx_20/ubitx_idle.ino index 974aef6..178dcdf 100644 --- a/ubitx_20/ubitx_idle.ino +++ b/ubitx_20/ubitx_idle.ino @@ -213,16 +213,18 @@ void updateLine2Buffer(char isDirectCall) //meterType : 0 = S.Meter, 1 : P.Meter void DisplayMeter(byte meterType, byte meterValue, char drawPosition) { - drawMeter(meterValue); //call original source code - int lineNumber = 0; - if ((displayOption1 & 0x01) == 0x01) - lineNumber = 1; + if (meterType == 0 || meterType == 1 || meterType == 2) + { + drawMeter(meterValue); //call original source code + int lineNumber = 0; + if ((displayOption1 & 0x01) == 0x01) + lineNumber = 1; + + lcd.setCursor(drawPosition, lineNumber); - lcd.setCursor(drawPosition, lineNumber); - - for (int i = 0; i < 6; i++) //meter 5 + +db 1 = 6 - lcd.write(lcdMeter[i]); - + for (int i = 0; i < 6; i++) //meter 5 + +db 1 = 6 + lcd.write(lcdMeter[i]); + } } byte testValue = 0; diff --git a/ubitx_20/ubitx_keyer.ino b/ubitx_20/ubitx_keyer.ino index 04163af..9aed3d3 100644 --- a/ubitx_20/ubitx_keyer.ino +++ b/ubitx_20/ubitx_keyer.ino @@ -90,13 +90,13 @@ void cwKeyUp(){ #define PDLSWAP 0x08 // 0 for normal, 1 for swap #define IAMBICB 0x10 // 0 for Iambic A, 1 for Iambic B enum KSTYPE {IDLE, CHK_DIT, CHK_DAH, KEYED_PREP, KEYED, INTER_ELEMENT }; -static long ktimer; +static unsigned long ktimer; unsigned char keyerState = IDLE; //Below is a test to reduce the keying error. do not delete lines //create by KD8CEC for compatible with new CW Logic char update_PaddleLatch(byte isUpdateKeyState) { - unsigned char tmpKeyerControl; + unsigned char tmpKeyerControl = 0; int paddle = analogRead(ANALOG_KEYER); if (paddle >= cwAdcDashFrom && paddle <= cwAdcDashTo) @@ -126,9 +126,7 @@ char update_PaddleLatch(byte isUpdateKeyState) { // modified by KD8CEC ******************************************************************************/ void cwKeyer(void){ - byte paddle; lastPaddle = 0; - int dot,dash; bool continue_loop = true; unsigned tmpKeyControl = 0; @@ -206,7 +204,7 @@ void cwKeyer(void){ break; } - Check_Cat(3); + Check_Cat(2); } //end of while } else{ diff --git a/ubitx_20/ubitx_menu.ino b/ubitx_20/ubitx_menu.ino index 08d9bb6..8ae6e53 100644 --- a/ubitx_20/ubitx_menu.ino +++ b/ubitx_20/ubitx_menu.ino @@ -64,7 +64,7 @@ void menuBand(int btn){ btnPressCount = 0; if (tuneTXType > 0) { //Just toggle 0 <-> 2, if tuneTXType is 100, 100 -> 0 -> 2 tuneTXType = 0; - printLineF2(F("Full range mode")); + printLineF2(F("General mode")); } else { tuneTXType = 2; @@ -289,18 +289,13 @@ void menuSelectMode(int btn){ beforeMode = selectModeType; - while(!btnDown() && digitalRead(PTT) == HIGH){ + while(!btnDown()){ //Display Mode Name - printLineF1(F("LSB USB CWL CWU")); - if (selectModeType == 0) - printLineF1(F("LSB")); - else if (selectModeType == 1) - printLineF1(F("USB")); - else if (selectModeType == 2) - printLineF1(F("CWL")); - else if (selectModeType == 3) - printLineF1(F("CWU")); - + memset(c, 0, sizeof(c)); + strcpy(c, " LSB USB CWL CWU"); + c[selectModeType * 4] = '>'; + printLine1(c); + knob = enc_read(); if (knob != 0) @@ -320,7 +315,8 @@ void menuSelectMode(int btn){ } } - Check_Cat(0); //To prevent disconnections + //Check_Cat(0); //To prevent disconnections + delay_background(50, 0); } if (beforeMode != selectModeType) { @@ -362,16 +358,15 @@ void menuCHMemory(int btn, byte isMemoryToVfo){ int knob = 0; int selectChannel = 0; byte isDisplayInfo = 1; - byte isCancel = 0; int moveStep = 0; unsigned long resultFreq, tmpFreq = 0; byte loadMode = 0; if (!btn){ if (isMemoryToVfo == 1) - printLine2("Channel To VFO?"); + printLineF2(F("Channel To VFO?")); else - printLine2("VFO To Channel?"); + printLineF2(F("VFO To Channel?")); } else { delay_background(500, 0); @@ -472,7 +467,7 @@ void menuCHMemory(int btn, byte isMemoryToVfo){ else { //Save current Frequency to Channel (selectChannel) - EEPROM.put(CHANNEL_FREQ + 4 * selectChannel, (frequency & 0x1FFFFFFF) | (modeToByte() << 29) ); + EEPROM.put(CHANNEL_FREQ + 4 * selectChannel, (frequency & 0x1FFFFFFF) | (((unsigned long)modeToByte()) << 29) ); printLine2("Saved Frequency"); } } @@ -491,7 +486,7 @@ void menuSetupKeyType(int btn){ printLineF2(F("Change Key Type?")); } else { - printLineF2(F("Press to set Key")); + //printLineF2(F("Press to set Key")); //for reduce usable flash memory delay_background(500, 0); selectedKeyType = cwKeyType; @@ -539,10 +534,7 @@ void menuSetupKeyType(int btn){ else keyerControl |= IAMBICB; } - - //delay_background(2000, 0); - //printLine2ClearAndUpdate(); - //menuOn = 0; + menuClearExit(1000); } } @@ -573,18 +565,11 @@ void menuADCMonitor(int btn){ adcPinA0 = analogRead(A0); //A0(BLACK, EncoderA) adcPinA1 = analogRead(A1); //A1(BROWN, EncoderB) adcPinA2 = analogRead(A2); //A2(RED, Function Key) - adcPinA3 = analogRead(A3); //A3(ORANGE, CW Key) - adcPinA6 = analogRead(A6); //A6(BLUE, Ptt) + adcPinA3 = analogRead(A3); //A3(PTT) + adcPinA6 = analogRead(A6); //A6(KEYER) adcPinA7 = analogRead(A7); //A7(VIOLET, Spare) -/* - sprintf(c, "%4d %4d %4d", adcPinA0, adcPinA1, adcPinA2); - printLine1(c); - sprintf(c, "%4d %4d %4d", adcPinA3, adcPinA6, adcPinA7); - printLine2(c); -*/ - - if (adcPinA6 < 10) { + if (adcPinA3 < 50) { if (pressKeyTime == 0) pressKeyTime = millis(); else if (pressKeyTime < (millis() - 3000)) @@ -623,13 +608,11 @@ void menuADCMonitor(int btn){ delay_background(200, 0); } //end of while - //printLine2ClearAndUpdate(); - //menuOn = 0; menuClearExit(0); } //VFO Toggle and save VFO Information, modified by KD8CEC -void menuVfoToggle(int btn, char isUseDelayTime) +void menuVfoToggle(int btn) { if (!btn){ if (vfoActive == VFO_A) @@ -649,7 +632,6 @@ void menuVfoToggle(int btn, char isUseDelayTime) frequency = vfoA; saveCheckFreq = frequency; byteToMode(vfoA_mode, 0); - //printLineF2(F("Selected VFO A")); } else { //vfoA = frequency; @@ -665,16 +647,11 @@ void menuVfoToggle(int btn, char isUseDelayTime) ritDisable(); setFrequency(frequency); - - //if (isUseDelayTime == 1) //Found Issue in wsjt-x Linux 32bit - // delay_background(500, 0); - - //printLine2ClearAndUpdate(); - //menuOn = 0; menuClearExit(0); } } +//modified for reduce used flash memory by KD8CEC void menuRitToggle(int btn){ if (!btn){ if (ritOn == 1) @@ -692,9 +669,7 @@ void menuRitToggle(int btn){ printLineF2(F("RIT is OFF")); ritDisable(); } - //delay_background(500, 0); - //printLine2ClearAndUpdate(); - //menuOn = 0; + menuClearExit(500); } } @@ -764,14 +739,18 @@ void menuSetup(int btn){ else printLineF2(F("Setup Off?")); }else { + modeCalibrate = ! modeCalibrate; + /* if (!modeCalibrate){ modeCalibrate = true; - printLineF2(F("Setup:On")); + //printLineF2(F("Setup:On")); } else { modeCalibrate = false; - printLineF2(F("Setup:Off")); + //printLineF2(F("Setup:Off")); } + */ + //delay_background(2000, 0); //printLine2Clear(); //menuOn = 0; @@ -802,14 +781,14 @@ void menuCWSpeed(int btn){ return; } - printLineF1(F("Press to set WPm")); + printLineF1(F("Press to set WPM")); strcpy(b, "WPM:"); itoa(wpm,c, 10); strcat(b, c); printLine2(b); delay_background(300, 0); - while(!btnDown() && digitalRead(PTT) == HIGH){ + while(!btnDown()){ knob = enc_read(); if (knob != 0){ @@ -873,8 +852,7 @@ void menuSetupCwDelay(int btn){ int tmpCWDelay = cwDelayTime * 10; if (!btn){ - strcpy(b, "CW TX->RX Delay"); - printLine2(b); + printLineF2(F("CW TX->RX Delay")); return; } @@ -885,7 +863,7 @@ void menuSetupCwDelay(int btn){ printLine2(b); delay_background(300, 0); - while(!btnDown() && digitalRead(PTT) == HIGH){ + while(!btnDown()){ knob = enc_read(); if (knob != 0){ if (tmpCWDelay > 3 && knob < 0) @@ -919,34 +897,47 @@ void menuSetupCwDelay(int btn){ //CW Time delay by KD8CEC void menuSetupTXCWInterval(int btn){ + char needDisplayInformation = 1; int knob = 0; int tmpTXCWInterval = delayBeforeCWStartTime * 2; if (!btn){ - strcpy(b, "CW Start Delay"); - printLine2(b); + printLineF2(F("CW Start Delay")); return; } printLineF1(F("Press, set Delay")); + /* strcpy(b, "Start Delay:"); itoa(tmpTXCWInterval,c, 10); strcat(b, c); printLine2(b); + */ delay_background(300, 0); - while(!btnDown() && digitalRead(PTT) == HIGH){ + while(!btnDown()){ + + if (needDisplayInformation == 1) { + strcpy(b, "Start Delay:"); + itoa(tmpTXCWInterval,c, 10); + strcat(b, c); + printLine2(b); + needDisplayInformation = 0; + } + knob = enc_read(); if (knob != 0){ if (tmpTXCWInterval > 0 && knob < 0) tmpTXCWInterval -= 2; if (tmpTXCWInterval < 500 && knob > 0) tmpTXCWInterval += 2; - + /* strcpy(b, "Start Delay:"); itoa(tmpTXCWInterval,c, 10); strcat(b, c); printLine2(b); + */ + needDisplayInformation = 1; } //abort if this button is down if (btnDown()) @@ -1281,8 +1272,6 @@ void menuSetupCwTone(int btn){ itoa(sideTone, b, 10); printLine2(b); - //delay(100); - //Check_Cat(0); //To prevent disconnections delay_background(100, 0); } noTone(CW_TONE); @@ -1308,20 +1297,23 @@ void setDialLock(byte tmpLock, byte fromMode) { isDialLock &= ~(vfoActive == VFO_A ? 0x01 : 0x02); if (fromMode == 2 || fromMode == 3) return; - + + //for reduce using flash memory + /* if (tmpLock == 1) printLineF2(F("Dial Lock ON")); else printLineF2(F("Dial Lock OFF")); + */ delay_background(1000, 0); printLine2ClearAndUpdate(); } -unsigned int btnDownTimeCount; +byte btnDownTimeCount; -#define PRESS_ADJUST_TUNE 1000 -#define PRESS_LOCK_CONTROL 2000 +#define PRESS_ADJUST_TUNE 20 //1000msec 20 * 50 = 1000milisec +#define PRESS_LOCK_CONTROL 40 //2000msec 40 * 50 = 2000milisec //Modified by KD8CEC void doMenu(){ @@ -1335,14 +1327,12 @@ 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_background(50, 0); - if (btnDownTimeCount++ == (PRESS_ADJUST_TUNE / 50)) { //Set Tune Step + if (btnDownTimeCount++ == (PRESS_ADJUST_TUNE)) { //Set Tune Step printLineF2(F("Set Tune Step?")); } - else if (btnDownTimeCount > (PRESS_LOCK_CONTROL / 50)) { //check long time Down Button -> 2.5 Second => Lock + else if (btnDownTimeCount > (PRESS_LOCK_CONTROL)) { //check long time Down Button -> 2.5 Second => Lock if (vfoActive == VFO_A) setDialLock((isDialLock & 0x01) == 0x01 ? 0 : 1, 0); //Reverse Dial lock else @@ -1353,12 +1343,12 @@ void doMenu(){ delay(50); //debounce //ADJUST TUNE STEP - if (btnDownTimeCount > (PRESS_ADJUST_TUNE / 50)) + if (btnDownTimeCount > PRESS_ADJUST_TUNE) { printLineF1(F("Press to set step")); isNeedDisplay = 1; //check to need display for display current value - while (digitalRead(PTT) == HIGH && !btnDown()) + while (!btnDown()) { //Check_Cat(0); //To prevent disconnections //delay(50); //debounce @@ -1422,7 +1412,7 @@ void doMenu(){ else if (select < 10) menuBand(btnState); else if (select < 20) - menuVfoToggle(btnState, 1); + menuVfoToggle(btnState); else if (select < 30) menuSelectMode(btnState); else if (select < 40) diff --git a/ubitx_20/ubitx_ui.ino b/ubitx_20/ubitx_ui.ino index 5259bf1..34fe5ad 100644 --- a/ubitx_20/ubitx_ui.ino +++ b/ubitx_20/ubitx_ui.ino @@ -99,8 +99,6 @@ void initMeter(){ //0 ~ 25 : 30 over : + 10 void drawMeter(int needle) { //5Char + O over - int drawCharLength = needle / 5; - int drawCharLengthLast = needle % 5; int i; for (i = 0; i < 5; i++) {