Compare commits
6 Commits
version0.3
...
version0.3
Author | SHA1 | Date | |
---|---|---|---|
|
14888bb7d7 | ||
|
57cd385b8a | ||
|
60777178a8 | ||
|
dd68b38454 | ||
|
d229a10092 | ||
|
3d019cdd44 |
@@ -365,6 +365,11 @@ void controlAutoCW(){
|
||||
//check interval time, if you want adjust interval between chars, modify below
|
||||
if (isAutoCWHold == 0 && (millis() - autoCWbeforeTime > cwSpeed * 3))
|
||||
{
|
||||
if (!inTx){ //if not TX Status, change RX -> TX
|
||||
keyDown = 0;
|
||||
startTx(TX_CW, 0); //disable updateDisplay Command for reduce latency time
|
||||
}
|
||||
|
||||
sendCWChar(EEPROM.read(CW_AUTO_DATA + autoCWSendCharIndex++));
|
||||
|
||||
if (autoCWSendCharIndex > autoCWSendCharEndIndex) { //finish auto cw send
|
||||
|
@@ -160,7 +160,8 @@ int count = 0; //to generally count ticks, loops, etc
|
||||
#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)
|
||||
#define TUNING_STEP 342 //TUNING STEP * 6 (index 1 + STEPS 5) //1STEP :
|
||||
|
||||
|
||||
//for reduce cw key error, eeprom address
|
||||
#define CW_ADC_MOST_BIT1 348 //most 2bits of DOT_TO , DOT_FROM, ST_TO, ST_FROM
|
||||
@@ -179,6 +180,10 @@ int count = 0; //to generally count ticks, loops, etc
|
||||
#define DISPLAY_OPTION1 361 //Display Option1
|
||||
#define DISPLAY_OPTION2 362 //Display Option2
|
||||
|
||||
#define CHANNEL_FREQ 630 //Channel 1 ~ 20, 1 Channel = 4 bytes
|
||||
#define CHANNEL_DESC 710 //Channel 1 ~ 20, 1 Channel = 4 bytes
|
||||
#define RESERVE3 770 //Reserve3 between Channel and Firmware id check
|
||||
|
||||
//Check Firmware type and version
|
||||
#define FIRMWAR_ID_ADDR 776 //776 : 0x59, 777 :0x58, 778 : 0x68 : Id Number, if not found id, erase eeprom(32~1023) for prevent system error.
|
||||
#define VERSION_ADDRESS 779 //check Firmware version
|
||||
@@ -260,7 +265,7 @@ byte sideToneSub = 0;
|
||||
//DialLock
|
||||
byte isDialLock = 0; //000000[0]vfoB [0]vfoA 0Bit : A, 1Bit : B
|
||||
byte isTxType = 0; //000000[0 - isSplit] [0 - isTXStop]
|
||||
byte arTuneStep[5];
|
||||
long arTuneStep[5];
|
||||
byte tuneStepIndex; //default Value 0, start Offset is 0 because of check new user
|
||||
|
||||
byte displayOption1 = 0;
|
||||
@@ -381,7 +386,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) {
|
||||
@@ -536,12 +541,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);
|
||||
@@ -596,12 +601,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
|
||||
@@ -754,27 +759,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)
|
||||
{
|
||||
@@ -806,6 +792,22 @@ 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;
|
||||
|
||||
if (powerVal == 1)
|
||||
return baseVal * 10;
|
||||
else if (powerVal == 2)
|
||||
return baseVal * 100;
|
||||
else if (powerVal == 3)
|
||||
return baseVal * 1000;
|
||||
else
|
||||
return baseVal;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* The settings are read from EEPROM. The first time around, the values may not be
|
||||
* present or out of range, in this case, some intelligent defaults are copied into the
|
||||
@@ -926,8 +928,8 @@ void initSettings(){
|
||||
findedValidValueCount = 0;
|
||||
EEPROM.get(TUNING_STEP, tuneStepIndex);
|
||||
for (byte i = 0; i < 5; i++) {
|
||||
arTuneStep[i] = EEPROM.read(TUNING_STEP + i + 1);
|
||||
if (arTuneStep[i] >= 1 && arTuneStep[i] < 251) //Maximum 250 for check valid Value
|
||||
arTuneStep[i] = byteToSteps(EEPROM.read(TUNING_STEP + i + 1));
|
||||
if (arTuneStep[i] >= 1 && arTuneStep[i] <= 60000) //Maximum 650 for check valid Value
|
||||
findedValidValueCount++;
|
||||
}
|
||||
|
||||
@@ -1003,12 +1005,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
|
||||
|
||||
@@ -1084,7 +1086,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
|
||||
@@ -1103,7 +1105,7 @@ void setup()
|
||||
|
||||
initPorts();
|
||||
|
||||
byteToMode(vfoA_mode);
|
||||
byteToMode(vfoA_mode, 0);
|
||||
initOscillators();
|
||||
|
||||
frequency = vfoA;
|
||||
@@ -1116,13 +1118,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,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)
|
||||
|
@@ -13,7 +13,39 @@
|
||||
#define printLineF1(x) (printLineF(1, x))
|
||||
#define printLineF2(x) (printLineF(0, x))
|
||||
|
||||
//Ham band move by KD8CEC
|
||||
//Current Frequency and mode to active VFO by KD8CEC
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
//Commonly called functions when exiting menus by KD8CEC
|
||||
void menuClearExit(int delayTime)
|
||||
{
|
||||
if (delayTime > 0)
|
||||
delay_background(delayTime, 0);
|
||||
|
||||
printLine2ClearAndUpdate();
|
||||
menuOn = 0;
|
||||
}
|
||||
|
||||
//Ham band or general band movement by KD8CEC
|
||||
void menuBand(int btn){
|
||||
int knob = 0;
|
||||
int stepChangeCount = 0;
|
||||
@@ -27,8 +59,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 +88,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 +108,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 +124,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 +162,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 +174,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 +198,10 @@ 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){
|
||||
|
||||
//IF Shift function, BFO Change like RIT, by KD8CEC
|
||||
void menuIFSSetup(int btn){
|
||||
int knob = 0;
|
||||
char needApplyChangeValue = 1;
|
||||
|
||||
@@ -275,18 +212,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);
|
||||
@@ -303,9 +240,9 @@ void menuIFSToggle(int btn){
|
||||
knob = enc_read();
|
||||
if (knob != 0){
|
||||
if (knob < 0)
|
||||
ifShiftValue -= 1l;
|
||||
ifShiftValue -= 50l;
|
||||
else if (knob > 0)
|
||||
ifShiftValue += 1;
|
||||
ifShiftValue += 50;
|
||||
|
||||
needApplyChangeValue = 1;
|
||||
}
|
||||
@@ -313,7 +250,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 +258,13 @@ 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;
|
||||
}
|
||||
}
|
||||
*/
|
||||
//Functions for CWL and CWU by KD8CEC
|
||||
void menuSelectMode(int btn){
|
||||
int knob = 0;
|
||||
int selectModeType = 0;
|
||||
@@ -412,8 +324,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 +338,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,72 +347,140 @@ 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){
|
||||
|
||||
//Memory to VFO, VFO to Memory by KD8CEC
|
||||
//select between MtoV and VtoM by isMemoryToVfo
|
||||
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 (splitOn == 0)
|
||||
printLineF2(F("Split On?"));
|
||||
else
|
||||
printLineF2(F("Split Off?"));
|
||||
if (isMemoryToVfo == 1)
|
||||
printLine2("Channel To VFO?");
|
||||
else
|
||||
printLine2("VFO To Channel?");
|
||||
}
|
||||
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)
|
||||
while(!btnDown()){
|
||||
if (isDisplayInfo == 1) {
|
||||
//Display Channel info *********************************
|
||||
memset(c, 0, sizeof(c));
|
||||
|
||||
if (selectChannel >= 20 || selectChannel <=-1)
|
||||
{
|
||||
keyerControl &= ~IAMBICB;
|
||||
printLineF2(F("IAMBICA Key!"));
|
||||
strcpy(c, "Exit setup?");
|
||||
}
|
||||
else
|
||||
{
|
||||
keyerControl |= IAMBICB;
|
||||
printLineF2(F("IAMBICB Key!"));
|
||||
//Read Frequency from eeprom
|
||||
EEPROM.get(CHANNEL_FREQ + 4 * selectChannel, resultFreq);
|
||||
|
||||
loadMode = (byte)(resultFreq >> 29);
|
||||
resultFreq = resultFreq & 0x1FFFFFFF;
|
||||
|
||||
//display channel description
|
||||
if (selectChannel < 10 && EEPROM.read(CHANNEL_DESC + 6 * selectChannel) == 0x03) { //0x03 is display Chnnel Name
|
||||
//display Channel Name
|
||||
for (int i = 0; i < 5; i++)
|
||||
c[i] = EEPROM.read(CHANNEL_DESC + 6 * selectChannel + i + 1);
|
||||
|
||||
c[5] = ':';
|
||||
}
|
||||
else {
|
||||
//Display frequency
|
||||
//1 LINE : Channel Information : CH00
|
||||
strcpy(c, "CH");
|
||||
if (selectChannel < 9)
|
||||
c[2] = '0';
|
||||
|
||||
ltoa(selectChannel + 1, b, 10);
|
||||
strcat(c, b); //append channel Number;
|
||||
strcat(c, " :"); //append channel Number;
|
||||
}
|
||||
/*
|
||||
if (selectChannel < 10)
|
||||
printLineFromEEPRom(0, 4, 0, userCallsignLength -1); //eeprom to lcd use offset (USER_CALLSIGN_DAT)
|
||||
*/
|
||||
|
||||
//display frequency
|
||||
tmpFreq = resultFreq;
|
||||
for (int i = 15; i >= 6; i--) {
|
||||
if (tmpFreq > 0) {
|
||||
if (i == 12 || i == 8) c[i] = '.';
|
||||
else {
|
||||
c[i] = tmpFreq % 10 + 0x30;
|
||||
tmpFreq /= 10;
|
||||
}
|
||||
}
|
||||
else
|
||||
c[i] = ' ';
|
||||
}
|
||||
}
|
||||
|
||||
printLine2(c);
|
||||
|
||||
isDisplayInfo = 0;
|
||||
}
|
||||
|
||||
knob = enc_read();
|
||||
|
||||
if (knob != 0)
|
||||
{
|
||||
moveStep += (knob > 0 ? 1 : -1);
|
||||
if (moveStep < -3) {
|
||||
if (selectChannel > -1)
|
||||
selectChannel--;
|
||||
|
||||
isDisplayInfo = 1;
|
||||
moveStep = 0;
|
||||
}
|
||||
else if (moveStep > 3) {
|
||||
if (selectChannel < 20)
|
||||
selectChannel++;
|
||||
|
||||
isDisplayInfo = 1;
|
||||
moveStep = 0;
|
||||
}
|
||||
}
|
||||
|
||||
delay_background(500, 0);
|
||||
printLine2ClearAndUpdate();
|
||||
menuOn = 0;
|
||||
|
||||
Check_Cat(0); //To prevent disconnections
|
||||
} //end of while (knob)
|
||||
|
||||
if (selectChannel < 20 && selectChannel >= 0)
|
||||
{
|
||||
if (isMemoryToVfo == 1)
|
||||
{
|
||||
if (resultFreq > 3000 && resultFreq < 60000000)
|
||||
setFrequency(resultFreq);
|
||||
byteToMode(loadMode, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
//Save current Frequency to Channel (selectChannel)
|
||||
EEPROM.put(CHANNEL_FREQ + 4 * selectChannel, (frequency & 0x1FFFFFFF) | (modeToByte() << 29) );
|
||||
printLine2("Saved Frequency");
|
||||
}
|
||||
}
|
||||
|
||||
menuClearExit(500);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
//Select CW Key Type by KD8CEC
|
||||
void menuSetupKeyType(int btn){
|
||||
@@ -572,10 +539,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 +623,110 @@ 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);
|
||||
}
|
||||
}
|
||||
|
||||
//Split communication using VFOA and VFOB by KD8CEC
|
||||
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 +745,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 +772,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 +836,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 +910,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 +960,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 +1047,8 @@ void factoryCalibration(int btn){
|
||||
|
||||
while(btnDown())
|
||||
delay(50);
|
||||
delay(100);
|
||||
|
||||
menuClearExit(100);
|
||||
}
|
||||
|
||||
void menuSetupCalibration(int btn){
|
||||
@@ -1040,8 +1112,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 +1187,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 +1224,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 +1243,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,21 +1281,23 @@ 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
|
||||
if (digitalRead(PTT) == LOW){
|
||||
printLineF2(F("Sidetone set!"));
|
||||
EEPROM.put(CW_SIDETONE, usbCarrier);
|
||||
EEPROM.put(CW_SIDETONE, sideTone);
|
||||
delay_background(2000, 0);
|
||||
}
|
||||
else
|
||||
sideTone = prev_sideTone;
|
||||
|
||||
printLine2ClearAndUpdate();
|
||||
menuOn = 0;
|
||||
//printLine2ClearAndUpdate();
|
||||
//menuOn = 0;
|
||||
menuClearExit(0);
|
||||
}
|
||||
|
||||
//Lock Dial move by KD8CEC
|
||||
@@ -1256,8 +1335,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 +1360,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:");
|
||||
@@ -1320,7 +1401,6 @@ void doMenu(){
|
||||
} //set tune step
|
||||
|
||||
//Below codes are origial code with modified by KD8CEC
|
||||
//Select menu
|
||||
menuOn = 2;
|
||||
|
||||
while (menuOn){
|
||||
@@ -1328,9 +1408,9 @@ void doMenu(){
|
||||
btnState = btnDown();
|
||||
|
||||
if (i > 0){
|
||||
if (modeCalibrate && select + i < 200)
|
||||
if (modeCalibrate && select + i < 220)
|
||||
select += i;
|
||||
if (!modeCalibrate && select + i < 100)
|
||||
if (!modeCalibrate && select + i < 120)
|
||||
select += i;
|
||||
}
|
||||
//if (i < 0 && select - i >= 0)
|
||||
@@ -1348,36 +1428,40 @@ 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)
|
||||
menuSplitOnOff(btnState); //SplitOn / off
|
||||
menuSplitOnOff(btnState); //SplitOn / off
|
||||
else if (select < 80)
|
||||
menuCWAutoKey(btnState);
|
||||
menuCHMemory(btnState, 0); //VFO to Memroy
|
||||
else if (select < 90)
|
||||
menuSetup(btnState);
|
||||
menuCHMemory(btnState, 1); //Memory to VFO
|
||||
else if (select < 100)
|
||||
menuCWAutoKey(btnState);
|
||||
else if (select < 110)
|
||||
menuSetup(btnState);
|
||||
else if (select < 120)
|
||||
menuExit(btnState);
|
||||
else if (select < 110 && modeCalibrate)
|
||||
menuSetupCalibration(btnState); //crystal
|
||||
else if (select < 120 && modeCalibrate)
|
||||
menuSetupCarrier(btnState); //lsb
|
||||
else if (select < 130 && modeCalibrate)
|
||||
menuSetupCWCarrier(btnState); //lsb
|
||||
menuSetupCalibration(btnState); //crystal
|
||||
else if (select < 140 && modeCalibrate)
|
||||
menuSetupCwTone(btnState);
|
||||
menuSetupCarrier(btnState); //lsb
|
||||
else if (select < 150 && modeCalibrate)
|
||||
menuSetupCwDelay(btnState);
|
||||
menuSetupCWCarrier(btnState); //lsb
|
||||
else if (select < 160 && modeCalibrate)
|
||||
menuSetupTXCWInterval(btnState);
|
||||
menuSetupCwTone(btnState);
|
||||
else if (select < 170 && modeCalibrate)
|
||||
menuSetupKeyType(btnState);
|
||||
menuSetupCwDelay(btnState);
|
||||
else if (select < 180 && modeCalibrate)
|
||||
menuADCMonitor(btnState);
|
||||
menuSetupTXCWInterval(btnState);
|
||||
else if (select < 190 && modeCalibrate)
|
||||
menuTxOnOff(btnState, 0x01); //TX OFF / ON
|
||||
menuSetupKeyType(btnState);
|
||||
else if (select < 200 && modeCalibrate)
|
||||
menuADCMonitor(btnState);
|
||||
else if (select < 210 && modeCalibrate)
|
||||
menuTxOnOff(btnState, 0x01); //TX OFF / ON
|
||||
else if (select < 220 && modeCalibrate)
|
||||
menuExit(btnState);
|
||||
|
||||
Check_Cat(0); //To prevent disconnections
|
||||
@@ -1385,9 +1469,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