add vfo to channel, channel to vfo
This commit is contained in:
parent
60777178a8
commit
57cd385b8a
@ -180,6 +180,10 @@ int count = 0; //to generally count ticks, loops, etc
|
|||||||
#define DISPLAY_OPTION1 361 //Display Option1
|
#define DISPLAY_OPTION1 361 //Display Option1
|
||||||
#define DISPLAY_OPTION2 362 //Display Option2
|
#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
|
//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 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
|
#define VERSION_ADDRESS 779 //check Firmware version
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
#define printLineF1(x) (printLineF(1, x))
|
#define printLineF1(x) (printLineF(1, x))
|
||||||
#define printLineF2(x) (printLineF(0, x))
|
#define printLineF2(x) (printLineF(0, x))
|
||||||
|
|
||||||
|
//Current Frequency and mode to active VFO by KD8CEC
|
||||||
void FrequencyToVFO(byte isSaveFreq)
|
void FrequencyToVFO(byte isSaveFreq)
|
||||||
{
|
{
|
||||||
//Save Frequency & Mode Information
|
//Save Frequency & Mode Information
|
||||||
@ -34,6 +35,7 @@ void FrequencyToVFO(byte isSaveFreq)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Commonly called functions when exiting menus by KD8CEC
|
||||||
void menuClearExit(int delayTime)
|
void menuClearExit(int delayTime)
|
||||||
{
|
{
|
||||||
if (delayTime > 0)
|
if (delayTime > 0)
|
||||||
@ -43,7 +45,7 @@ void menuClearExit(int delayTime)
|
|||||||
menuOn = 0;
|
menuOn = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Ham band move by KD8CEC
|
//Ham band or general band movement by KD8CEC
|
||||||
void menuBand(int btn){
|
void menuBand(int btn){
|
||||||
int knob = 0;
|
int knob = 0;
|
||||||
int stepChangeCount = 0;
|
int stepChangeCount = 0;
|
||||||
@ -198,6 +200,7 @@ void byteWithFreqToMode(byte modeValue){
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
//IF Shift function, BFO Change like RIT, by KD8CEC
|
||||||
void menuIFSSetup(int btn){
|
void menuIFSSetup(int btn){
|
||||||
int knob = 0;
|
int knob = 0;
|
||||||
char needApplyChangeValue = 1;
|
char needApplyChangeValue = 1;
|
||||||
@ -261,6 +264,7 @@ void menuIFSSetup(int btn){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Functions for CWL and CWU by KD8CEC
|
||||||
void menuSelectMode(int btn){
|
void menuSelectMode(int btn){
|
||||||
int knob = 0;
|
int knob = 0;
|
||||||
int selectModeType = 0;
|
int selectModeType = 0;
|
||||||
@ -351,6 +355,131 @@ void menuSelectMode(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 (isMemoryToVfo == 1)
|
||||||
|
printLine2("Channel To VFO?");
|
||||||
|
else
|
||||||
|
printLine2("VFO To Channel?");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
delay_background(500, 0);
|
||||||
|
|
||||||
|
while(!btnDown()){
|
||||||
|
if (isDisplayInfo == 1) {
|
||||||
|
//Display Channel info *********************************
|
||||||
|
memset(c, 0, sizeof(c));
|
||||||
|
|
||||||
|
if (selectChannel >= 20 || selectChannel <=-1)
|
||||||
|
{
|
||||||
|
strcpy(c, "Exit setup?");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//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) == 0x33) { //0x33 is display Chnnel Name
|
||||||
|
//display Channel Name
|
||||||
|
for (int i = 0; i < 5; i++)
|
||||||
|
c[i] = EEPROM.read(CHANNEL_DESC + 6 * selectChannel + i + 1);
|
||||||
|
}
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
//Select CW Key Type by KD8CEC
|
||||||
void menuSetupKeyType(int btn){
|
void menuSetupKeyType(int btn){
|
||||||
int knob = 0;
|
int knob = 0;
|
||||||
@ -568,6 +697,7 @@ void menuRitToggle(int btn){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Split communication using VFOA and VFOB by KD8CEC
|
||||||
void menuSplitOnOff(int btn){
|
void menuSplitOnOff(int btn){
|
||||||
if (!btn){
|
if (!btn){
|
||||||
if (splitOn == 0)
|
if (splitOn == 0)
|
||||||
@ -1269,7 +1399,6 @@ void doMenu(){
|
|||||||
} //set tune step
|
} //set tune step
|
||||||
|
|
||||||
//Below codes are origial code with modified by KD8CEC
|
//Below codes are origial code with modified by KD8CEC
|
||||||
//Select menu
|
|
||||||
menuOn = 2;
|
menuOn = 2;
|
||||||
|
|
||||||
while (menuOn){
|
while (menuOn){
|
||||||
@ -1277,9 +1406,9 @@ void doMenu(){
|
|||||||
btnState = btnDown();
|
btnState = btnDown();
|
||||||
|
|
||||||
if (i > 0){
|
if (i > 0){
|
||||||
if (modeCalibrate && select + i < 200)
|
if (modeCalibrate && select + i < 220)
|
||||||
select += i;
|
select += i;
|
||||||
if (!modeCalibrate && select + i < 100)
|
if (!modeCalibrate && select + i < 120)
|
||||||
select += i;
|
select += i;
|
||||||
}
|
}
|
||||||
//if (i < 0 && select - i >= 0)
|
//if (i < 0 && select - i >= 0)
|
||||||
@ -1301,32 +1430,36 @@ void doMenu(){
|
|||||||
else if (select < 60)
|
else if (select < 60)
|
||||||
menuCWSpeed(btnState);
|
menuCWSpeed(btnState);
|
||||||
else if (select < 70)
|
else if (select < 70)
|
||||||
menuSplitOnOff(btnState); //SplitOn / off
|
menuSplitOnOff(btnState); //SplitOn / off
|
||||||
else if (select < 80)
|
else if (select < 80)
|
||||||
menuCWAutoKey(btnState);
|
menuCHMemory(btnState, 0); //VFO to Memroy
|
||||||
else if (select < 90)
|
else if (select < 90)
|
||||||
menuSetup(btnState);
|
menuCHMemory(btnState, 1); //Memory to VFO
|
||||||
else if (select < 100)
|
else if (select < 100)
|
||||||
|
menuCWAutoKey(btnState);
|
||||||
|
else if (select < 110)
|
||||||
|
menuSetup(btnState);
|
||||||
|
else if (select < 120)
|
||||||
menuExit(btnState);
|
menuExit(btnState);
|
||||||
else if (select < 110 && modeCalibrate)
|
|
||||||
menuSetupCalibration(btnState); //crystal
|
|
||||||
else if (select < 120 && modeCalibrate)
|
|
||||||
menuSetupCarrier(btnState); //lsb
|
|
||||||
else if (select < 130 && modeCalibrate)
|
else if (select < 130 && modeCalibrate)
|
||||||
menuSetupCWCarrier(btnState); //lsb
|
menuSetupCalibration(btnState); //crystal
|
||||||
else if (select < 140 && modeCalibrate)
|
else if (select < 140 && modeCalibrate)
|
||||||
menuSetupCwTone(btnState);
|
menuSetupCarrier(btnState); //lsb
|
||||||
else if (select < 150 && modeCalibrate)
|
else if (select < 150 && modeCalibrate)
|
||||||
menuSetupCwDelay(btnState);
|
menuSetupCWCarrier(btnState); //lsb
|
||||||
else if (select < 160 && modeCalibrate)
|
else if (select < 160 && modeCalibrate)
|
||||||
menuSetupTXCWInterval(btnState);
|
menuSetupCwTone(btnState);
|
||||||
else if (select < 170 && modeCalibrate)
|
else if (select < 170 && modeCalibrate)
|
||||||
menuSetupKeyType(btnState);
|
menuSetupCwDelay(btnState);
|
||||||
else if (select < 180 && modeCalibrate)
|
else if (select < 180 && modeCalibrate)
|
||||||
menuADCMonitor(btnState);
|
menuSetupTXCWInterval(btnState);
|
||||||
else if (select < 190 && modeCalibrate)
|
else if (select < 190 && modeCalibrate)
|
||||||
menuTxOnOff(btnState, 0x01); //TX OFF / ON
|
menuSetupKeyType(btnState);
|
||||||
else if (select < 200 && modeCalibrate)
|
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);
|
menuExit(btnState);
|
||||||
|
|
||||||
Check_Cat(0); //To prevent disconnections
|
Check_Cat(0); //To prevent disconnections
|
||||||
|
Loading…
Reference in New Issue
Block a user