kopia lustrzana https://github.com/dl9rdz/rdz_ttgo_sonde
Merge branch 'dl9rdz:devel' into devel
commit
d48b777c93
|
@ -253,10 +253,10 @@ void setupChannelList() {
|
||||||
type = STYPE_DFM;
|
type = STYPE_DFM;
|
||||||
}
|
}
|
||||||
else if (space[1] == 'M') {
|
else if (space[1] == 'M') {
|
||||||
type = STYPE_M10;
|
type = STYPE_M10M20;
|
||||||
}
|
}
|
||||||
else if (space[1] == '2') {
|
else if (space[1] == '2') {
|
||||||
type = STYPE_M20;
|
type = STYPE_M10M20;
|
||||||
}
|
}
|
||||||
else if (space[1] == '3') {
|
else if (space[1] == '3') {
|
||||||
type = STYPE_MP3H;
|
type = STYPE_MP3H;
|
||||||
|
@ -1896,8 +1896,10 @@ void checkTouchStatus() {
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned long bdd1, bdd2;
|
unsigned long bdd1, bdd2;
|
||||||
|
static bool b1wasdown = false;
|
||||||
void IRAM_ATTR buttonISR() {
|
void IRAM_ATTR buttonISR() {
|
||||||
if (digitalRead(button1.pin) == 0) { // Button down
|
if (digitalRead(button1.pin) == 0) { // Button down
|
||||||
|
b1wasdown = true;
|
||||||
unsigned long now = my_millis();
|
unsigned long now = my_millis();
|
||||||
if (now - button1.keydownTime < 500) {
|
if (now - button1.keydownTime < 500) {
|
||||||
// Double press
|
// Double press
|
||||||
|
@ -1910,6 +1912,8 @@ void IRAM_ATTR buttonISR() {
|
||||||
button1.numberKeyPresses += 1;
|
button1.numberKeyPresses += 1;
|
||||||
button1.keydownTime = now;
|
button1.keydownTime = now;
|
||||||
} else { //Button up
|
} else { //Button up
|
||||||
|
if(!b1wasdown) return;
|
||||||
|
b1wasdown = false;
|
||||||
unsigned long now = my_millis();
|
unsigned long now = my_millis();
|
||||||
if (button1.doublepress == -1) return; // key was never pressed before, ignore button up
|
if (button1.doublepress == -1) return; // key was never pressed before, ignore button up
|
||||||
unsigned int elapsed = now - button1.keydownTime;
|
unsigned int elapsed = now - button1.keydownTime;
|
||||||
|
@ -1967,7 +1971,7 @@ int getKeyPress() {
|
||||||
button1.pressed = KP_NONE;
|
button1.pressed = KP_NONE;
|
||||||
#if 0
|
#if 0
|
||||||
int x = digitalRead(button1.pin);
|
int x = digitalRead(button1.pin);
|
||||||
Serial.printf("Debug: bdd1=%ld, bdd2=%ld\b", bdd1, bdd2);
|
Serial.printf("Debug: bdd1=%ld, bdd2=%ld\n", bdd1, bdd2);
|
||||||
Serial.printf("button1 press (dbl:%d) (now:%d): %d at %ld (%d)\n", button1.doublepress, x, p, button1.keydownTime, button1.numberKeyPresses);
|
Serial.printf("button1 press (dbl:%d) (now:%d): %d at %ld (%d)\n", button1.doublepress, x, p, button1.keydownTime, button1.numberKeyPresses);
|
||||||
#endif
|
#endif
|
||||||
return p;
|
return p;
|
||||||
|
@ -3554,8 +3558,8 @@ enum SHState { SH_DISCONNECTED, SH_CONNECTING, SH_CONN_IDLE, SH_CONN_APPENDING,
|
||||||
SHState shState = SH_DISCONNECTED;
|
SHState shState = SH_DISCONNECTED;
|
||||||
time_t shStart = 0;
|
time_t shStart = 0;
|
||||||
|
|
||||||
/* Sonde.h: enum SondeType { STYPE_DFM,, STYPE_RS41, STYPE_RS92, STYPE_M10, STYPE_M20, STYPE_MP3H }; */
|
/* Sonde.h: enum SondeType { STYPE_DFM,, STYPE_RS41, STYPE_RS92, STYPE_M10M20, STYPE_M10, STYPE_M20, STYPE_MP3H }; */
|
||||||
const char *sondeTypeStrSH[NSondeTypes] = { "DFM", "RS41", "RS92", "M10", "M20", "MRZ" };
|
const char *sondeTypeStrSH[NSondeTypes] = { "DFM", "RS41", "RS92", "Mxx"/*never sent*/, "M10", "M20", "MRZ" };
|
||||||
const char *dfmSubtypeStrSH[16] = { NULL, NULL, NULL, NULL, NULL, NULL,
|
const char *dfmSubtypeStrSH[16] = { NULL, NULL, NULL, NULL, NULL, NULL,
|
||||||
"DFM06", // 0x06
|
"DFM06", // 0x06
|
||||||
"PS15", // 0x07
|
"PS15", // 0x07
|
||||||
|
|
|
@ -2,8 +2,8 @@ let stypes=new Map();
|
||||||
stypes.set('4', 'RS41');
|
stypes.set('4', 'RS41');
|
||||||
stypes.set('R', 'RS92');
|
stypes.set('R', 'RS92');
|
||||||
stypes.set('D', 'DFM');
|
stypes.set('D', 'DFM');
|
||||||
stypes.set('M', 'M10');
|
stypes.set('M', 'M10/M20');
|
||||||
stypes.set('2', 'M20');
|
//stypes.set('2', 'M10/M20');
|
||||||
stypes.set('3', 'MP3H');
|
stypes.set('3', 'MP3H');
|
||||||
|
|
||||||
/* (no longer) Used by qrg.html in RX_FSK.ino */
|
/* (no longer) Used by qrg.html in RX_FSK.ino */
|
||||||
|
@ -11,6 +11,7 @@ function prep() {
|
||||||
var stlist=document.querySelectorAll("input.stype");
|
var stlist=document.querySelectorAll("input.stype");
|
||||||
for(txt of stlist){
|
for(txt of stlist){
|
||||||
var val=txt.getAttribute('value'); var nam=txt.getAttribute('name');
|
var val=txt.getAttribute('value'); var nam=txt.getAttribute('name');
|
||||||
|
if(val=='2') { val='M'; }
|
||||||
var sel=document.createElement('select');
|
var sel=document.createElement('select');
|
||||||
sel.setAttribute('name',nam);
|
sel.setAttribute('name',nam);
|
||||||
for(stype of stypes) {
|
for(stype of stypes) {
|
||||||
|
|
|
@ -30,8 +30,8 @@ static float homelat, homelon;
|
||||||
int ShFreqImport::stringToStype(const char *type) {
|
int ShFreqImport::stringToStype(const char *type) {
|
||||||
if(type[2]=='4') return STYPE_RS41;
|
if(type[2]=='4') return STYPE_RS41;
|
||||||
if(type[2]=='9') return STYPE_RS92;
|
if(type[2]=='9') return STYPE_RS92;
|
||||||
if(type[1]=='1') return STYPE_M10;
|
if(type[1]=='1') return STYPE_M10M20;
|
||||||
if(type[1]=='2') return STYPE_M20;
|
if(type[1]=='2') return STYPE_M10M20;
|
||||||
if(type[0]=='D') return STYPE_DFM;
|
if(type[0]=='D') return STYPE_DFM;
|
||||||
if(type[2]=='3') return STYPE_MP3H; // TODO: check if '3' is correct
|
if(type[2]=='3') return STYPE_MP3H; // TODO: check if '3' is correct
|
||||||
return -1; // iMet is not supported
|
return -1; // iMet is not supported
|
||||||
|
|
|
@ -21,8 +21,8 @@ const char *evstring[]={"NONE", "KEY1S", "KEY1D", "KEY1M", "KEY1L", "KEY2S", "KE
|
||||||
const char *RXstr[]={"RX_OK", "RX_TIMEOUT", "RX_ERROR", "RX_UNKNOWN"};
|
const char *RXstr[]={"RX_OK", "RX_TIMEOUT", "RX_ERROR", "RX_UNKNOWN"};
|
||||||
|
|
||||||
// Dependency to enum SondeType
|
// Dependency to enum SondeType
|
||||||
const char *sondeTypeStr[NSondeTypes] = { "DFM ", "RS41", "RS92", "M10 ", "M20 ", "MP3H" };
|
const char *sondeTypeStr[NSondeTypes] = { "DFM ", "RS41", "RS92", "Mxx ", "M10 ", "M20 ", "MP3H" };
|
||||||
const char *sondeTypeLongStr[NSondeTypes] = { "DFM (all)", "RS41", "RS92", "M10 ", "M20 ", "MP3-H1" };
|
const char *sondeTypeLongStr[NSondeTypes] = { "DFM (all)", "RS41", "RS92", "M10/M20", "M10 ", "M20 ", "MP3-H1" };
|
||||||
const char sondeTypeChar[NSondeTypes] = { 'D', '4', 'R', 'M', '2', '3' };
|
const char sondeTypeChar[NSondeTypes] = { 'D', '4', 'R', 'M', '2', '3' };
|
||||||
const char *manufacturer_string[]={"Graw", "Vaisala", "Vaisala", "Meteomodem", "Meteomodem", "Meteo-Radiy"};
|
const char *manufacturer_string[]={"Graw", "Vaisala", "Vaisala", "Meteomodem", "Meteomodem", "Meteo-Radiy"};
|
||||||
|
|
||||||
|
@ -444,6 +444,7 @@ void Sonde::setup() {
|
||||||
break;
|
break;
|
||||||
case STYPE_M10:
|
case STYPE_M10:
|
||||||
case STYPE_M20:
|
case STYPE_M20:
|
||||||
|
case STYPE_M10M20:
|
||||||
m10m20.setup( sondeList[rxtask.currentSonde].freq * 1000000);
|
m10m20.setup( sondeList[rxtask.currentSonde].freq * 1000000);
|
||||||
break;
|
break;
|
||||||
case STYPE_MP3H:
|
case STYPE_MP3H:
|
||||||
|
@ -474,6 +475,7 @@ void Sonde::receive() {
|
||||||
break;
|
break;
|
||||||
case STYPE_M10:
|
case STYPE_M10:
|
||||||
case STYPE_M20:
|
case STYPE_M20:
|
||||||
|
case STYPE_M10M20:
|
||||||
res = m10m20.receive();
|
res = m10m20.receive();
|
||||||
break;
|
break;
|
||||||
case STYPE_DFM:
|
case STYPE_DFM:
|
||||||
|
@ -572,6 +574,7 @@ rxloop:
|
||||||
break;
|
break;
|
||||||
case STYPE_M10:
|
case STYPE_M10:
|
||||||
case STYPE_M20:
|
case STYPE_M20:
|
||||||
|
case STYPE_M10M20:
|
||||||
m10m20.waitRXcomplete();
|
m10m20.waitRXcomplete();
|
||||||
break;
|
break;
|
||||||
case STYPE_DFM:
|
case STYPE_DFM:
|
||||||
|
@ -717,7 +720,7 @@ void Sonde::clearDisplay() {
|
||||||
}
|
}
|
||||||
|
|
||||||
SondeType Sonde::realType(SondeInfo *si) {
|
SondeType Sonde::realType(SondeInfo *si) {
|
||||||
if(TYPE_IS_METEO(si->type)) { return si->d.subtype==1 ? STYPE_M10:STYPE_M20; }
|
if(TYPE_IS_METEO(si->type) && si->d.subtype>0 ) { return si->d.subtype==1 ? STYPE_M10:STYPE_M20; }
|
||||||
else return si->type;
|
else return si->type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -62,8 +62,8 @@ extern const char *RXstr[];
|
||||||
// 01000000 => goto sonde -1
|
// 01000000 => goto sonde -1
|
||||||
// 01000001 => goto sonde +1
|
// 01000001 => goto sonde +1
|
||||||
|
|
||||||
#define NSondeTypes 6
|
#define NSondeTypes 7
|
||||||
enum SondeType { STYPE_DFM, STYPE_RS41, STYPE_RS92, STYPE_M10, STYPE_M20, STYPE_MP3H };
|
enum SondeType { STYPE_DFM, STYPE_RS41, STYPE_RS92, STYPE_M10M20, STYPE_M10, STYPE_M20, STYPE_MP3H };
|
||||||
extern const char *sondeTypeStr[NSondeTypes];
|
extern const char *sondeTypeStr[NSondeTypes];
|
||||||
extern const char *sondeTypeLongStr[NSondeTypes];
|
extern const char *sondeTypeLongStr[NSondeTypes];
|
||||||
extern const char sondeTypeChar[NSondeTypes];
|
extern const char sondeTypeChar[NSondeTypes];
|
||||||
|
@ -72,7 +72,7 @@ extern const char *manufacturer_string[NSondeTypes];
|
||||||
#define ISOLED(cfg) ((cfg).disptype==0 || (cfg).disptype==2)
|
#define ISOLED(cfg) ((cfg).disptype==0 || (cfg).disptype==2)
|
||||||
|
|
||||||
#define TYPE_IS_DFM(t) ( (t)==STYPE_DFM )
|
#define TYPE_IS_DFM(t) ( (t)==STYPE_DFM )
|
||||||
#define TYPE_IS_METEO(t) ( (t)==STYPE_M10 || (t)==STYPE_M20 )
|
#define TYPE_IS_METEO(t) ( (t)==STYPE_M10M20 || (t)==STYPE_M10 || (t)==STYPE_M20 )
|
||||||
|
|
||||||
typedef struct st_sondedata {
|
typedef struct st_sondedata {
|
||||||
// decoded ID
|
// decoded ID
|
||||||
|
|
|
@ -264,7 +264,7 @@ char *aprs_senddata(SondeInfo *si, const char *usercall, const char *sym) {
|
||||||
*b=0;
|
*b=0;
|
||||||
aprsstr_append(b, usercall);
|
aprsstr_append(b, usercall);
|
||||||
aprsstr_append(b, ">");
|
aprsstr_append(b, ">");
|
||||||
const char *destcall="APZRDZ";
|
const char *destcall="APRRDZ";
|
||||||
// const char *destcall="APRARX,SONDEGATE,TCPIP,qAR,oh3bsg";
|
// const char *destcall="APRARX,SONDEGATE,TCPIP,qAR,oh3bsg";
|
||||||
aprsstr_append(b, destcall);
|
aprsstr_append(b, destcall);
|
||||||
// uncompressed
|
// uncompressed
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
const char *version_name = "rdzTTGOsonde";
|
const char *version_name = "rdzTTGOsonde";
|
||||||
const char *version_id = "devel20210926";
|
const char *version_id = "devel20210928";
|
||||||
const int SPIFFS_MAJOR=2;
|
const int SPIFFS_MAJOR=2;
|
||||||
const int SPIFFS_MINOR=16;
|
const int SPIFFS_MINOR=16;
|
||||||
|
|
Ładowanie…
Reference in New Issue