Compare commits
3 Commits
v0.35
...
version1.0
Author | SHA1 | Date | |
---|---|---|---|
|
1e9576ddc2 | ||
|
a7684284d2 | ||
|
3b4aaa664c |
48
README.md
48
README.md
@@ -1,14 +1,19 @@
|
||||
#IMPORTANT INFORMATION
|
||||
----------------------------------------------------------------------------
|
||||
- 0.33 Version Test only download. almost complete
|
||||
- Beta 0.26 and Beta 0.261, Beta 0.262,0.27 is complete test, 0.28 is tested.
|
||||
- 0.31 is tested but has not critical bug
|
||||
- You can download and use it (Release section).
|
||||
- Beta 0.26 and Beta 0.261, Beta 0.262, Beta 0.27 is complete test
|
||||
- You can download and use it.
|
||||
|
||||
#NOTICE
|
||||
----------------------------------------------------------------------------
|
||||
I received uBITX a month ago and found that many features are required, and began coding with the idea of implementing minimal functionality as a general hf transceiver rather than an experimental device.
|
||||
|
||||
- fixed bugs...
|
||||
- Diallock for uBITX's sensitive encoders
|
||||
- built in softare Memory keyer and cw options control for CW communication
|
||||
- Implementation of CAT communication protocol for Digital Communication (as FT8, JT65, etc)
|
||||
- Delay Options for external Linear.
|
||||
- and more...
|
||||
|
||||
Most of the basic functions of the HF transceiver I thought were implemented.
|
||||
The minimum basic specification for uBITX to operate as a radio, I think it is finished.
|
||||
So I will release the 0.27 version and if I do not see the bug anymore, I will try to change the version name to 1.0.
|
||||
@@ -41,41 +46,6 @@ Prepared or finished tasks for the next version
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
## REVISION RECORD
|
||||
0.33
|
||||
- Added CWL, CWU Mode, (dont complete test yet)
|
||||
- fixed VFO changed bug.
|
||||
- Added Additional BFO for CWL, CWL
|
||||
- Added IF Shift
|
||||
- Change confirmation key PTT -> function key (not critical menus)
|
||||
- Change CW Key Select type, (toggle -> select by dial)
|
||||
|
||||
0.32
|
||||
- Added function Scroll Frequencty on upper line
|
||||
- Added Example code for Draw meter and remarked (you can see and use this code in source codes)
|
||||
- Added Split function, just toggle VFOs when TX/RX
|
||||
|
||||
0.31
|
||||
- Fixed CW ADC Range error
|
||||
- Display Message on Upper Line (anothor VFO Frequency, Tune Step, Selected Key Type)
|
||||
|
||||
0.30
|
||||
- implemented the function to monitor the value of all analog inputs. This allows you to monitor the status of the CW keys connected to your uBITX.
|
||||
- possible to set the ADC range for CW Keying. If no setting is made, it will have the same range as the original code. If you set the CW Keying ADC Values using uBITX Manager 0.3, you can reduce the key error.
|
||||
- Added the function to select Straight Key, IAMBICA, IAMBICB key from the menu.
|
||||
- default Band select is Ham Band mode, if you want common type, long press function key at band select menu, uBITX Manager can be used to modify frequencies to suit your country.
|
||||
|
||||
0.29
|
||||
- Remove the use of initialization values in BFO settings - using crruent value, if factory reset
|
||||
- Select Tune Step, default 0, 20, 50, 100, 200, Use the uBITX Manager to set the steps value you want. You can select Step by pressing and holding the Function Key (1sec ~ 2sec).
|
||||
- Modify Dial Lock Function, Press the Function key for more than 3 seconds to toggle dial lock.
|
||||
- created a new frequency tune method. remove original source codes, Threshold has been applied to reduce malfunction. checked the continuity of the user operating to make natural tune possible.
|
||||
- stabilize and remove many warning messages - by Pullrequest and merge
|
||||
- Changed cw keying method. removed the original code and applied Ron's code and Improved compatibility with original hardware and CAT commnication. It can be used without modification of hardware.
|
||||
|
||||
0.28
|
||||
- Fixed CAT problem with hamlib on Linux
|
||||
- restore Protocol autorecovery logic
|
||||
|
||||
0.27
|
||||
(First alpha test version, This will be renamed to the major version 1.0)
|
||||
- Dual VFO Dial Lock (vfoA Dial lock)
|
||||
|
@@ -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:
|
||||
/*
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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;
|
||||
|
@@ -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{
|
||||
|
@@ -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)
|
||||
|
@@ -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++) {
|
||||
|
Reference in New Issue
Block a user