From 6e148489f35a193cd1db2638df06f809b171874f Mon Sep 17 00:00:00 2001 From: "Hansi, dl9rdz" Date: Tue, 21 Sep 2021 08:29:53 +0200 Subject: [PATCH] keep data on livemap - restore old behaviour --- RX_FSK/data/livemap.js | 4 ++-- RX_FSK/features.h | 2 +- RX_FSK/src/Chasemapper.cpp | 41 ++++++++++++++++++++++++++++++++++++++ RX_FSK/src/Chasemapper.h | 13 ++++++++++++ RX_FSK/src/Sonde.h | 10 +++++++++- 5 files changed, 66 insertions(+), 4 deletions(-) create mode 100644 RX_FSK/src/Chasemapper.cpp create mode 100644 RX_FSK/src/Chasemapper.h diff --git a/RX_FSK/data/livemap.js b/RX_FSK/data/livemap.js index bc82b6a..07bfeff 100644 --- a/RX_FSK/data/livemap.js +++ b/RX_FSK/data/livemap.js @@ -74,8 +74,8 @@ headtxt = function(data,stat) { var staticon = (stat == '1')?greendot:yellowdot; statbar = staticon + statbar; if ((statbar.length) > 10*greendot.length) { statbar = statbar.substring(0,10*greendot.length); } - //if (data.lat == '0.000000') { return false; } - if (data.res == 0) { + if (data.lat == '0.000000') { return false; } + if (data.id) { $('#sonde_id').html(data.id); $('#sonde_alt').html(data.alt); $('#sonde_climb').html(data.climb); diff --git a/RX_FSK/features.h b/RX_FSK/features.h index 9c47004..fecf820 100644 --- a/RX_FSK/features.h +++ b/RX_FSK/features.h @@ -5,7 +5,7 @@ /* data feed to sondehubv2 */ /* needs about 4k4 code, 200b data, 200b stack, 200b heap */ #define FEATURE_SONDEHUB 1 - +#define FEaTURE_CHASEMAPPER 1 #define FEATURE_MQTT 1 #define FEATURE_RS92 1 diff --git a/RX_FSK/src/Chasemapper.cpp b/RX_FSK/src/Chasemapper.cpp new file mode 100644 index 0000000..d24ced4 --- /dev/null +++ b/RX_FSK/src/Chasemapper.cpp @@ -0,0 +1,41 @@ +#include "Chasemapper.h" + +extern const char *sondeTypeStrSH[]; + +int Chasemapper::send(WiFiUDP &udp, SondeInfo *si) { + char buf[1024]; + struct tm tim; + time_t t = si->time; + gmtime_r(&t, &tim); + uint8_t realtype = si->type; + if (TYPE_IS_METEO(realtype)) { + realtype = si->subtype == 1 ? STYPE_M10 : STYPE_M20; + } + sprintf(buf, "{ \"type\": \"PAYLOAD_SUMMARY\"," + "\"callsign\": \"%s\"," + "\"latitude\": %g," + "\"longidude\": %g," + "\"altitude\": %d," + "\"speed\": %d," + "\"heading\": %d," + "\"time\": \"%02d:%02d:%02d\"," + "\"model\": \"%s\"," + "\"freq\": \"%.3f MHz\"," + "\"temp\": %g }", + si->ser, + si->lat, + si->lon, + (int)si->alt, + (int)(si->hs * 1.9438445), // m/s into knots + (int)si->dir, + tim.tm_hour, tim.tm_min, tim.tm_sec, + sondeTypeStrSH[realtype], + si->freq, + si->temperature); + Serial.printf("Sending chasemapper json: %s\n", buf); + udp.beginPacket(sonde.config.cm.host, sonde.config.cm.port); + udp.write((const uint8_t *)buf, strlen(buf)); + udp.endPacket(); + return 0; +} + diff --git a/RX_FSK/src/Chasemapper.h b/RX_FSK/src/Chasemapper.h new file mode 100644 index 0000000..68d8cad --- /dev/null +++ b/RX_FSK/src/Chasemapper.h @@ -0,0 +1,13 @@ +#ifndef _CHASEMAPPER_H +#define _CHASEMAPPER_H + +#include "Sonde.h" +//#include +#include + +class Chasemapper { +public: + static int send(WiFiUDP &udb, SondeInfo *si); +}; + +#endif diff --git a/RX_FSK/src/Sonde.h b/RX_FSK/src/Sonde.h index d16dbd0..a1e122b 100644 --- a/RX_FSK/src/Sonde.h +++ b/RX_FSK/src/Sonde.h @@ -3,6 +3,7 @@ #define Sonde_h #include +#include enum DbgLevel { DEBUG_OFF=0, DEBUG_INFO=1, DEBUG_SPARSER=16, DEBUG_DISPLAY=8 }; // to be extended for configuring serial debug output extern uint8_t debug; @@ -103,7 +104,7 @@ typedef struct st_sondeinfo { uint32_t viewStart; // millis() timestamp of viewinf this sonde with current display int8_t lastState; // -1: disabled; 0: norx; 1: rx // shut down timers, currently only for RS41; -1=disabled - int16_t launchKT, burstKT, countKT; + uint16_t launchKT, burstKT, countKT; uint16_t crefKT; // frame number in which countKT was last sent // sonde specific extra data, NULL if unused or not yet initialized, currently used for RS41 subframe data (calibration) void *extra; @@ -186,6 +187,12 @@ struct st_mqtt { char prefix[64]; }; +struct st_cm { + int active; + char host[64]; + int port; +}; + struct st_sondehub { int active; int chase; @@ -259,6 +266,7 @@ typedef struct st_rdzconfig { struct st_kisstnc kisstnc; // target for KISS TNC (via TCP, mainly for APRSdroid) struct st_mqtt mqtt; struct st_sondehub sondehub; + struct st_cm cm; } RDZConfig;