From cad5bd16cd611eccdb7078516590a9a5c9918c75 Mon Sep 17 00:00:00 2001 From: "Hans P. Reiser" Date: Thu, 7 Apr 2022 23:46:59 +0000 Subject: [PATCH] json reorg part 2 --- RX_FSK/RX_FSK.ino | 12 ++++++++---- RX_FSK/src/json.cpp | 10 ++++++++-- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/RX_FSK/RX_FSK.ino b/RX_FSK/RX_FSK.ino index de921bf..9f64a9d 100644 --- a/RX_FSK/RX_FSK.ino +++ b/RX_FSK/RX_FSK.ino @@ -23,6 +23,7 @@ #include "src/aprs.h" #include "src/ShFreqImport.h" #include "src/RS41.h" +#include "src/json.h" #if FEATURE_CHASEMAPPER #include "src/Chasemapper.h" #endif @@ -545,9 +546,12 @@ const char *createStatusForm() { const char *createLiveJson() { char *ptr = message; - strcpy(ptr, "{"); - SondeInfo *s = &sonde.sondeList[sonde.currentSonde]; + + strcpy(ptr, "{\"sonde\": {"); + // use the same JSON format here as for MQTT and for the Android App + sonde2json( ptr+strlen(ptr), 1024, s ); +#if 0 sprintf(ptr + strlen(ptr), "\"sonde\": {\"rssi\": %d, \"vframe\": %d, \"time\": %d,\"id\": \"%s\", \"freq\": %3.3f, \"type\": \"%s\"", s->rssi, s->d.vframe, s->d.time, s->d.id, s->freq, sondeTypeStr[sonde.realType(s)]); @@ -563,7 +567,8 @@ const char *createLiveJson() { sprintf(ptr + strlen(ptr), ", \"speed\": %.1f", s->d.hs); sprintf(ptr + strlen(ptr), ", \"launchsite\": \"%s\", \"res\": %d }", s->launchsite, s->rxStat[0]); - +#endif + strcat(ptr, " }"); if (gpsPos.valid) { sprintf(ptr + strlen(ptr), ", \"gps\": {\"lat\": %g, \"lon\": %g, \"alt\": %d, \"sat\": %d, \"speed\": %g, \"dir\": %d, \"hdop\": %d }", gpsPos.lat, gpsPos.lon, gpsPos.alt, gpsPos.sat, gpsPos.speed, gpsPos.course, gpsPos.hdop); //} @@ -573,7 +578,6 @@ const char *createLiveJson() { int alt = isnan(sonde.config.rxalt) ? 0 : (int)sonde.config.rxalt; sprintf(ptr + strlen(ptr), ", \"gps\": {\"lat\": %g, \"lon\": %g, \"alt\": %d, \"sat\": 0, \"speed\": 0, \"dir\": 0, \"hdop\": 0 }", sonde.config.rxlat, sonde.config.rxlon, alt); } - } strcat(ptr, "}"); diff --git a/RX_FSK/src/json.cpp b/RX_FSK/src/json.cpp index 0675f0c..9964694 100644 --- a/RX_FSK/src/json.cpp +++ b/RX_FSK/src/json.cpp @@ -30,6 +30,7 @@ int sonde2json(char *buf, int maxlen, SondeInfo *si) "\"id\": \"%s\"," // TODO: maybe remove in the future, ser is enough, client can calculate APRS id if needed "\"ser\": \"%s\"," "\"frame\": %u," // raw frame, from sonde, can be 0. (TODO: add virtual frame # as in sondehub?) + "\"vframe\": %d," "\"time\": %u," "\"lat\": %.5f," "\"lon\": %.5f," @@ -46,11 +47,14 @@ int sonde2json(char *buf, int maxlen, SondeInfo *si) "\"launchKT\": %d," "\"burstKT\": %d," "\"countKT\": %d," - "\"crefKT\": %d", + "\"crefKT\": %d," + "\"launchsite\": \"%d\"," + "\"res\": %d", getType(si), s->id, s->ser, s->frame, + s->vframe, s->time, s->lat, s->lon, @@ -67,7 +71,9 @@ int sonde2json(char *buf, int maxlen, SondeInfo *si) s->launchKT, s->burstKT, s->countKT, - s->crefKT + s->crefKT, + si->launchsite, + si->rxStat[0] ); if(n>=maxlen) return -1; buf += n; maxlen -= n;