diff --git a/RX_FSK/RX_FSK.ino b/RX_FSK/RX_FSK.ino index 4a62ccd..71634ec 100644 --- a/RX_FSK/RX_FSK.ino +++ b/RX_FSK/RX_FSK.ino @@ -187,6 +187,10 @@ void setupChannelList() { else if (space[1] == 'M') { type = STYPE_M10; } + else if (space[1] == '2') { + type = STYPE_M10; + } + else continue; int active = space[3] == '+' ? 1 : 0; if (space[4] == ' ') { @@ -205,19 +209,46 @@ void setupChannelList() { const char *createQRGForm() { char *ptr = message; - strcpy(ptr, "
"); + strcpy(ptr, ""); + strcat(ptr, ""); + + strcat(ptr, "
IDActiveFreqLaunchsiteMode
"); for (int i = 0; i < sonde.config.maxsonde; i++) { - String s = sondeTypeSelect(i >= sonde.nSonde ? 2 : sonde.sondeList[i].type); + //String s = sondeTypeSelect(i >= sonde.nSonde ? 2 : sonde.sondeList[i].type); String site = sonde.sondeList[i].launchsite; sprintf(ptr + strlen(ptr), "" "" "" - "", + //"", + "
IDActiveFreqLaunchsiteMode
%d", i + 1, i + 1, (i < sonde.nSonde && sonde.sondeList[i].active) ? "checked" : "", i + 1, i >= sonde.nSonde ? 400.000 : sonde.sondeList[i].freq, i + 1, i >= sonde.nSonde ? " " : sonde.sondeList[i].launchsite, - i + 1, s.c_str()); + i + 1, i >= sonde.nSonde ? 2 : sondeTypeChar[sonde.sondeList[i].type] ); + //i + 1, s.c_str()); } strcat(ptr, "
"); Serial.printf("QRG form: size=%d bytes\n", strlen(message)); @@ -260,7 +291,8 @@ const char *handleQRGPost(AsyncWebServerRequest *request) { const char *tstr = tstring.c_str(); const char *sstr = sstring.c_str(); Serial.printf("Processing a=%s, f=%s, t=%s, site=%s\n", active ? "YES" : "NO", fstr, tstr, sstr); - char typech = (tstr[2] == '4' ? '4' : tstr[2] == '9' ? 'R' : tstr[0] == 'M' ? 'M' : tstr[3] == ' ' ? 'D' : tstr[3]); // a bit ugly + //char typech = (tstr[2] == '4' ? '4' : tstr[2] == '9' ? 'R' : tstr[0] == 'M' ? 'M' : tstr[3] == ' ' ? 'D' : tstr[3]); // a bit ugly + char typech = tstr[0]; file.printf("%3.3f %c %c %s\n", atof(fstr), typech, active ? '+' : '-', sstr); } file.close(); diff --git a/RX_FSK/data/screens.txt b/RX_FSK/data/screens.txt index 406bbb1..5fd6d7e 100644 --- a/RX_FSK/data/screens.txt +++ b/RX_FSK/data/screens.txt @@ -213,7 +213,7 @@ key2action=#,#,#,# timeaction=#,D,+ fonts=5,6 0,0=XScan -0,5,-3=S#: +0,8,-3=S#: 0,9,5=T 3,0=F MHz 5,0,16=S diff --git a/RX_FSK/data/screens2.txt b/RX_FSK/data/screens2.txt index d363393..0841679 100644 --- a/RX_FSK/data/screens2.txt +++ b/RX_FSK/data/screens2.txt @@ -107,7 +107,7 @@ key2action=#,#,#,# timeaction=#,D,+ fonts=5,6 0,0=XScan -0,5,-3=S#: +0,8,-3=S#: 0,9,5.5=T 3,0=F MHz 5,0,16=S diff --git a/RX_FSK/version.h b/RX_FSK/version.h index d93888c..a83b181 100644 --- a/RX_FSK/version.h +++ b/RX_FSK/version.h @@ -1,4 +1,4 @@ const char *version_name = "rdzTTGOsonde"; -const char *version_id = "devel20201201"; +const char *version_id = "devel20201215"; const int SPIFFS_MAJOR=2; const int SPIFFS_MINOR=6; diff --git a/libraries/SondeLib/Display.cpp b/libraries/SondeLib/Display.cpp index a3249a6..8322893 100644 --- a/libraries/SondeLib/Display.cpp +++ b/libraries/SondeLib/Display.cpp @@ -28,8 +28,9 @@ extern SemaphoreHandle_t axpSemaphore; SPIClass spiDisp(HSPI); -const char *sondeTypeStr[NSondeTypes] = { "DFM ", "DFM9", "RS41", "RS92", "M10 ", "DFM6" }; -const char *sondeTypeLongStr[NSondeTypes] = { "DFM (all)", "DFM9 (old)", "RS41", "RS92", "M10 ", "DFM6 (old)" }; +const char *sondeTypeStr[NSondeTypes] = { "DFM ", "DFM9", "RS41", "RS92", "M10 ", "M20 ", "DFM6" }; +const char *sondeTypeLongStr[NSondeTypes] = { "DFM (all)", "DFM9 (old)", "RS41", "RS92", "M10 ", "M20 ", "DFM6 (old)" }; +const char sondeTypeChar[NSondeTypes] = { 'D', '9', '4', 'R', 'M', '2', '6' }; byte myIP_tiles[8*11]; static uint8_t ap_tile[8]={0x00,0x04,0x22,0x92, 0x92, 0x22, 0x04, 0x00}; diff --git a/libraries/SondeLib/Sonde.cpp b/libraries/SondeLib/Sonde.cpp index e120d5d..0343b44 100644 --- a/libraries/SondeLib/Sonde.cpp +++ b/libraries/SondeLib/Sonde.cpp @@ -438,6 +438,7 @@ void Sonde::setup() { rs92.setup( sondeList[rxtask.currentSonde].freq * 1000000); break; case STYPE_M10: + case STYPE_M20: m10.setup( sondeList[rxtask.currentSonde].freq * 1000000); break; } @@ -463,6 +464,7 @@ void Sonde::receive() { res = rs92.receive(); break; case STYPE_M10: + case STYPE_M20: res = m10.receive(); break; case STYPE_DFM06_OLD: @@ -554,6 +556,7 @@ rxloop: rs92.waitRXcomplete(); break; case STYPE_M10: + case STYPE_M20: m10.waitRXcomplete(); break; case STYPE_DFM06_OLD: diff --git a/libraries/SondeLib/Sonde.h b/libraries/SondeLib/Sonde.h index 6a0d6bc..6d7c4fe 100644 --- a/libraries/SondeLib/Sonde.h +++ b/libraries/SondeLib/Sonde.h @@ -53,13 +53,14 @@ extern const char *RXstr[]; // 01000000 => goto sonde -1 // 01000001 => goto sonde +1 -#define NSondeTypes 6 -enum SondeType { STYPE_DFM, STYPE_DFM09_OLD, STYPE_RS41, STYPE_RS92, STYPE_M10, STYPE_DFM06_OLD }; +#define NSondeTypes 7 +enum SondeType { STYPE_DFM, STYPE_DFM09_OLD, STYPE_RS41, STYPE_RS92, STYPE_M10, STYPE_M20, STYPE_DFM06_OLD }; extern const char *sondeTypeStr[NSondeTypes]; extern const char *sondeTypeLongStr[NSondeTypes]; +extern const char sondeTypeChar[NSondeTypes]; #define TYPE_IS_DFM(t) ( (t)==STYPE_DFM || (t)==STYPE_DFM09_OLD || (t)==STYPE_DFM06_OLD ) -#define TYPE_IS_METEO(t) ( (t)==STYPE_M10 ) +#define TYPE_IS_METEO(t) ( (t)==STYPE_M10 || (t)==STYPE_M20 ) typedef struct st_sondeinfo { // receiver configuration