kopia lustrzana https://github.com/dl9rdz/rdz_ttgo_sonde
async client test
rodzic
c64651f36b
commit
e8fdd5dee7
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
#include "features.h"
|
#include "features.h"
|
||||||
#include "version.h"
|
#include "version.h"
|
||||||
|
|
||||||
|
@ -90,6 +89,8 @@ WiFiClient tncclient;
|
||||||
// JSON over TCP for communicating with my kotlin andoird test stuff
|
// JSON over TCP for communicating with my kotlin andoird test stuff
|
||||||
WiFiServer rdzserver(14570);
|
WiFiServer rdzserver(14570);
|
||||||
WiFiClient rdzclient;
|
WiFiClient rdzclient;
|
||||||
|
// APRS over TCP for radiosondy.info etc
|
||||||
|
AsyncClient tcpclient;
|
||||||
|
|
||||||
#if FEATURE_MQTT
|
#if FEATURE_MQTT
|
||||||
unsigned long lastMqttUptime = 0;
|
unsigned long lastMqttUptime = 0;
|
||||||
|
@ -2510,7 +2511,7 @@ void loopDecoder() {
|
||||||
// first check if ID and position lat+lonis ok
|
// first check if ID and position lat+lonis ok
|
||||||
|
|
||||||
if (s->d.validID && ((s->d.validPos & 0x03) == 0x03)) {
|
if (s->d.validID && ((s->d.validPos & 0x03) == 0x03)) {
|
||||||
const char *str = aprs_senddata(s, sonde.config.call, sonde.config.udpfeed.symbol);
|
char *str = aprs_senddata(s, sonde.config.call, sonde.config.udpfeed.symbol);
|
||||||
if (connected) {
|
if (connected) {
|
||||||
char raw[201];
|
char raw[201];
|
||||||
int rawlen = aprsstr_mon2raw(str, raw, APRS_MAXLEN);
|
int rawlen = aprsstr_mon2raw(str, raw, APRS_MAXLEN);
|
||||||
|
@ -2527,6 +2528,22 @@ void loopDecoder() {
|
||||||
Serial.print("sending: "); Serial.println(raw);
|
Serial.print("sending: "); Serial.println(raw);
|
||||||
tncclient.write(raw, rawlen);
|
tncclient.write(raw, rawlen);
|
||||||
}
|
}
|
||||||
|
if(sonde.config.tcpfeed.active) {
|
||||||
|
static unsigned long lasttcp = 0;
|
||||||
|
static bool loginok = false;
|
||||||
|
if( tcpclient.disconnected()) {
|
||||||
|
tcpclient.connect(sonde.config.tcpfeed.host, sonde.config.tcpfeed.port);
|
||||||
|
}
|
||||||
|
else if( tcpclient.connected() ) {
|
||||||
|
unsigned long now = millis();
|
||||||
|
if( (now-lasttcp) > sonde.config.tcpfeed.highrate*1000L ) {
|
||||||
|
strcat(str,"\r\n");
|
||||||
|
Serial.print(str);
|
||||||
|
tcpclient.write(str, strlen(str));
|
||||||
|
lasttcp = now;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
#if FEATURE_CHASEMAPPER
|
#if FEATURE_CHASEMAPPER
|
||||||
if (sonde.config.cm.active) {
|
if (sonde.config.cm.active) {
|
||||||
Chasemapper::send(udp, s);
|
Chasemapper::send(udp, s);
|
||||||
|
@ -2759,6 +2776,15 @@ void enableNetwork(bool enable) {
|
||||||
MDNS.end();
|
MDNS.end();
|
||||||
connected = false;
|
connected = false;
|
||||||
}
|
}
|
||||||
|
tcpclient.onConnect([](void *arg, AsyncClient *s) {
|
||||||
|
Serial.write("APRS: TCP connected\n");
|
||||||
|
char buf[128];
|
||||||
|
snprintf(buf, 128, "user %s pass %d vers %s %s\r\n", sonde.config.call, sonde.config.passcode, version_name, version_id);
|
||||||
|
s->write(buf, strlen(buf));
|
||||||
|
});
|
||||||
|
tcpclient.onData([](void *arg, AsyncClient *c, void *data, size_t len) {
|
||||||
|
Serial.write((const uint8_t *)data, len);
|
||||||
|
});
|
||||||
Serial.println("enableNetwork done");
|
Serial.println("enableNetwork done");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -298,7 +298,7 @@ char *aprs_senddata(SondeInfo *si, const char *usercall, const char *sym) {
|
||||||
i=strlen(b);
|
i=strlen(b);
|
||||||
snprintf(b+i, APRS_MAXLEN-i, "!w%c%c!", 33+dao91(s->lat), 33+dao91(s->lon));
|
snprintf(b+i, APRS_MAXLEN-i, "!w%c%c!", 33+dao91(s->lat), 33+dao91(s->lon));
|
||||||
|
|
||||||
strcat(b, "&");
|
// ??? strcat(b, "&");
|
||||||
char comm[100];
|
char comm[100];
|
||||||
snprintf(comm, 100, "Clb=%.1fm/s %.3fMHz Type=%s", s->vs, si->freq, sondeTypeStr[si->type]);
|
snprintf(comm, 100, "Clb=%.1fm/s %.3fMHz Type=%s", s->vs, si->freq, sondeTypeStr[si->type]);
|
||||||
strcat(b, comm);
|
strcat(b, comm);
|
||||||
|
|
Ładowanie…
Reference in New Issue