Added memory channel protocol

This commit is contained in:
Sjef Verhoeven PE5PVB
2024-04-02 14:58:24 +02:00
parent cefe96424b
commit 44bab28043
3 changed files with 101 additions and 1 deletions

Binary file not shown.

View File

@@ -161,6 +161,101 @@ void Communication() {
Serial.print("OK\nT" + String(frequency * 10) + "\nG" + String(!EQset) + String(!iMSset) + "\n");
XDRGTKUSB = true;
if (XDRGTKMuteScreen) MuteScreen(1);
} else if (data_str.charAt(0) == 's') {
Serial.print("r:0\n");
Serial.print("v:" + String(VERSION) + "\n");
Serial.print("m:" + String(EE_PRESETS_CNT) + "\n");
Serial.print("s:" + String(EE_PRESETS_FREQUENCY) + "\n");
Serial.print("o:" + String(ConverterSet) + "\n");
Serial.print("a:" + String(FREQ_LW_LOW_EDGE_MIN) + "," + String(FREQ_SW_END) + "\n");
Serial.print("f:" + String(FREQ_FM_START) + "," + String(FREQ_FM_END) + "\n");
for (byte x = 0; x < EE_PRESETS_CNT; x++) {
Serial.print(x + 1);
Serial.print(",");
Serial.print(memory[x]);
if (memoryband[x] == BAND_FM || memoryband[x] == BAND_OIRT) Serial.print("0");
Serial.print(",");
Serial.print(memorybw[x]);
Serial.print(",");
Serial.print(memoryms[x]);
Serial.print("\n");
}
} else if (data_str.startsWith("S")) {
byte mempos = 0;
byte memband = 0;
unsigned int memfreq = 0;
byte membw;
byte memms;
byte error = 0;
data_str.remove(0, 1);
int commaPos = data_str.indexOf(',');
if (commaPos != -1) {
mempos = data_str.substring(0, commaPos).toInt() - 1;
data_str.remove(0, commaPos + 1);
commaPos = data_str.indexOf(',');
if (commaPos != -1) {
memfreq = data_str.substring(0, commaPos).toInt();
data_str.remove(0, commaPos + 1);
commaPos = data_str.indexOf(',');
if (commaPos != -1) {
membw = data_str.substring(0, commaPos).toInt();
data_str.remove(0, commaPos + 1);
memms = data_str.toInt();
if (memfreq >= FREQ_LW_LOW_EDGE_MIN && memfreq <= FREQ_LW_HIGH_EDGE_MAX) {
memband = BAND_LW;
} else if (memfreq > FREQ_LW_HIGH_EDGE_MAX && memfreq <= FREQ_MW_HIGH_EDGE_MAX_10K) {
memband = BAND_MW;
} else if (memfreq > FREQ_MW_HIGH_EDGE_MAX_10K && memfreq <= FREQ_SW_END) {
memband = BAND_SW;
} else if (ConverterSet != 0 && memfreq >= FREQ_FM_OIRT_START * 10 && memfreq <= FREQ_FM_OIRT_END * 10) {
memband = BAND_OIRT;
memfreq /= 10;
} else if ((ConverterSet != 0 ? memfreq > FREQ_FM_OIRT_START * 10 : FREQ_FM_OIRT_END * 10) && memfreq <= FREQ_FM_END * 10) {
memband = BAND_FM;
memfreq /= 10;
} else if (memfreq == EE_PRESETS_FREQUENCY) {
memband = BAND_FM;
} else {
error |= (1 << 0);
}
if (mempos == 0 && memfreq == EE_PRESETS_FREQUENCY) error |= (1 << 4);
if (mempos >= EE_PRESETS_CNT) error |= (1 << 1);
if (memband != BAND_FM && memband != BAND_OIRT) {
if (membw < 1 || membw > 4) error |= (1 << 2);
} else if (membw > 16) {
error |= (1 << 2);
}
if (memms > 1) error |= (1 << 3);
if (error == 0) {
error |= (1 << 7);
memorypos = mempos;
memoryband[mempos] = memband;
memory[mempos] = memfreq;
memorybw[mempos] = membw;
memoryms[mempos] = memms;
EEPROM.writeByte(mempos + EE_PRESETS_BAND_START, memband);
EEPROM.writeByte(mempos + EE_PRESET_BW_START, membw);
EEPROM.writeByte(mempos + EE_PRESET_MS_START, memms);
EEPROM.writeUInt((mempos * 4) + EE_PRESETS_START, memfreq);
EEPROM.commit();
}
Serial.print("S:" + String(error, DEC) + "\n");
}
}
}
}
}
@@ -417,7 +512,7 @@ void XDRGTKRoutine() {
Squelch *= 10;
DataPrint("Q");
DataPrint(String(Squelch / 10));
DataPrint("\n");
DataPrint("\n");
}
break;

View File

@@ -17,6 +17,7 @@ extern bool BWreset;
extern bool direction;
extern bool externaltune;
extern bool fullsearchrds;
extern bool memoryms[];
extern bool menu;
extern bool RDSSPYTCP;
extern bool RDSSPYUSB;
@@ -43,6 +44,9 @@ extern byte EQset;
extern byte iMSEQ;
extern byte iMSset;
extern byte language;
extern byte memoryband[];
extern byte memorybw[];
extern byte memorypos;
extern byte subnetclient;
extern char buff[16];
extern int ActiveColor;
@@ -95,6 +99,7 @@ extern unsigned int frequency_SW;
extern unsigned int frequencyold;
extern unsigned int LWHighEdgeSet;
extern unsigned int LWLowEdgeSet;
extern unsigned int memory[];
extern unsigned int MWHighEdgeSet;
extern unsigned int MWLowEdgeSet;
extern unsigned int scanner_end;