diff --git a/TEF6686_ESP32.ino b/TEF6686_ESP32.ino index 08efae0..77c1b8f 100644 --- a/TEF6686_ESP32.ino +++ b/TEF6686_ESP32.ino @@ -2764,9 +2764,11 @@ void DoMemoryPosTune() { } if (presets[memorypos].RDSPI[0] != '\0') { - for (byte i = 0; i < 5; i++) { + for (byte i = 0; i < 4; i++) { radio.rds.picode[i] = presets[memorypos].RDSPI[i]; } + radio.rds.picode[4] = ' '; + radio.rds.picode[5] = ' '; radio.rds.picode[6] = '\0'; radio.rds.correctPI = (uint16_t)strtol(radio.rds.picode, NULL, 16); } else { diff --git a/docs/Memory channel protocol.pdf b/docs/Memory channel protocol.pdf index 0315aec..e540d6d 100644 Binary files a/docs/Memory channel protocol.pdf and b/docs/Memory channel protocol.pdf differ diff --git a/src/comms.cpp b/src/comms.cpp index 12b078e..415a0e3 100644 --- a/src/comms.cpp +++ b/src/comms.cpp @@ -258,6 +258,16 @@ void Communication() { if (memms > 1) error |= (1 << 3); + if (rdsPi[0] != '\0') { + for (int i = 0; i < 4; i++) { + char c = rdsPi[i]; + if (!((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'))) { + error |= (1 << 5); + break; + } + } + } + if (error == 0) { error |= (1 << 7); memorypos = mempos; @@ -453,7 +463,7 @@ void XDRGTKRoutine() { if (!screenmute) { if (!usesquelch) { tftPrint(-1, "SQ:", 212, 145, BackgroundColor, BackgroundColor, 16); - showAutoSquelch(0); + showAutoSquelch(0); } else { Squelch = -150; }