From 3ed7f6550fa7f351ac68c8b2f2f99e2919dc48f2 Mon Sep 17 00:00:00 2001 From: Zilog80 Date: Sat, 9 May 2020 09:32:57 +0200 Subject: [PATCH] multi: JSON output update --- demod/multi/dfm09base.c | 11 ++++++++++- demod/multi/lms6Xbase.c | 4 +++- demod/multi/m10base.c | 4 ++-- demod/multi/rs41base.c | 3 ++- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/demod/multi/dfm09base.c b/demod/multi/dfm09base.c index 2d3fa3b..0fede9f 100644 --- a/demod/multi/dfm09base.c +++ b/demod/multi/dfm09base.c @@ -560,6 +560,11 @@ static int conf_out(gpx_t *gpx, ui8_t *conf_bits, int ec) { gpx->status[1] = val/100.0; } } + else { + gpx->status[0] = 0; + gpx->status[1] = 0; + } + return ret; } @@ -668,8 +673,12 @@ static int print_gpx(gpx_t *gpx) { } // Print JSON blob // valid sonde_ID? - printf("{ \"frame\": %d, \"id\": \"%s\", \"datetime\": \"%04d-%02d-%02dT%02d:%02d:%06.3fZ\", \"lat\": %.5f, \"lon\": %.5f, \"alt\": %.5f, \"vel_h\": %.5f, \"heading\": %.5f, \"vel_v\": %.5f", + printf("{ \"type\": \"%s\"", "DFM"); + printf(", \"frame\": %d, \"id\": \"%s\", \"datetime\": \"%04d-%02d-%02dT%02d:%02d:%06.3fZ\", \"lat\": %.5f, \"lon\": %.5f, \"alt\": %.5f, \"vel_h\": %.5f, \"heading\": %.5f, \"vel_v\": %.5f", gpx->frnr, json_sonde_id, gpx->jahr, gpx->monat, gpx->tag, gpx->std, gpx->min, gpx->sek, gpx->lat, gpx->lon, gpx->alt, gpx->horiV, gpx->dir, gpx->vertV); + if (gpx->ptu_out >= 0xA && gpx->status[0] > 0) { // DFM>=09(P): Battery (STM32) + printf(", \"batt\": %.2f", gpx->status[0]); + } if (gpx->ptu_out) { // get temperature float t = get_Temp(gpx); // ecc-valid temperature? if (t > -270.0) printf(", \"temp\": %.1f", t); diff --git a/demod/multi/lms6Xbase.c b/demod/multi/lms6Xbase.c index 1e9c919..7b69e12 100644 --- a/demod/multi/lms6Xbase.c +++ b/demod/multi/lms6Xbase.c @@ -730,11 +730,13 @@ static int print_frame(gpx_t *gpx, int crc_err, int len) { // UTC oder GPS? char sntyp[] = "LMS6-"; if (gpx->typ == 10) sntyp[3] = 'X'; - printf("{ \"frame\": %d, \"id\": \"%s%d\", \"datetime\": \"", gpx->frnr, sntyp, gpx->sn ); + printf("{ \"type\": \"%s\"", "LMS6"); + printf(", \"frame\": %d, \"id\": \"%s%d\", \"datetime\": \"", gpx->frnr, sntyp, gpx->sn ); //if (gpx->week > 0) printf("%04d-%02d-%02dT", gpx->jahr, gpx->monat, gpx->tag ); printf("%02d:%02d:%06.3fZ\", \"lat\": %.5f, \"lon\": %.5f, \"alt\": %.5f, \"vel_h\": %.5f, \"heading\": %.5f, \"vel_v\": %.5f", gpx->std, gpx->min, gpx->sek, gpx->lat, gpx->lon, gpx->alt, gpx->vH, gpx->vD, gpx->vV ); printf(", \"gpstow\": %d", gpx->gpstow ); + printf(", \"subtype\": \"%c\"", sntyp[3]); printf(" }\n"); printf("\n"); } diff --git a/demod/multi/m10base.c b/demod/multi/m10base.c index 04d361d..3dce090 100644 --- a/demod/multi/m10base.c +++ b/demod/multi/m10base.c @@ -789,8 +789,8 @@ static int print_pos(gpx_t *gpx, int csOK) { sn_id[15] = '\0'; for (j = 0; sn_id[j]; j++) { if (sn_id[j] == ' ') sn_id[j] = '-'; } - fprintf(stdout, "{ "); - fprintf(stdout, "\"frame\": %lu ,", (unsigned long)(sec_gps0+0.5)); + fprintf(stdout, "{ \"type\": \"%s\"", "M10"); + fprintf(stdout, ", \"frame\": %lu ,", (unsigned long)(sec_gps0+0.5)); fprintf(stdout, "\"id\": \"%s\", \"datetime\": \"%04d-%02d-%02dT%02d:%02d:%06.3fZ\", \"lat\": %.5f, \"lon\": %.5f, \"alt\": %.5f, \"vel_h\": %.5f, \"heading\": %.5f, \"vel_v\": %.5f, \"sats\": %d", sn_id, utc_jahr, utc_monat, utc_tag, utc_std, utc_min, utc_sek, gpx->lat, gpx->lon, gpx->alt, gpx->vH, gpx->vD, gpx->vV, gpx->numSV); // APRS id, 9 characters diff --git a/demod/multi/rs41base.c b/demod/multi/rs41base.c index f3eb702..ce7bc5f 100644 --- a/demod/multi/rs41base.c +++ b/demod/multi/rs41base.c @@ -1321,7 +1321,8 @@ static int print_position(gpx_t *gpx, int ec) { // Print out telemetry data as JSON if ((!err && !err1 && !err3) || (!err && encrypted)) { // frame-nb/id && gps-time && gps-position (crc-)ok; 3 CRCs, RS not needed // eigentlich GPS, d.h. UTC = GPS - 18sec (ab 1.1.2017) - fprintf(stdout, "{ \"frame\": %d, \"id\": \"%s\", \"datetime\": \"%04d-%02d-%02dT%02d:%02d:%06.3fZ\", \"lat\": %.5f, \"lon\": %.5f, \"alt\": %.5f, \"vel_h\": %.5f, \"heading\": %.5f, \"vel_v\": %.5f, \"sats\": %d, \"bt\": %d, \"batt\": %.2f", + fprintf(stdout, "{ \"type\": \"%s\"", "RS41"); + fprintf(stdout, ", \"frame\": %d, \"id\": \"%s\", \"datetime\": \"%04d-%02d-%02dT%02d:%02d:%06.3fZ\", \"lat\": %.5f, \"lon\": %.5f, \"alt\": %.5f, \"vel_h\": %.5f, \"heading\": %.5f, \"vel_v\": %.5f, \"sats\": %d, \"bt\": %d, \"batt\": %.2f", gpx->frnr, gpx->id, gpx->jahr, gpx->monat, gpx->tag, gpx->std, gpx->min, gpx->sek, gpx->lat, gpx->lon, gpx->alt, gpx->vH, gpx->vD, gpx->vV, gpx->numSV, gpx->conf_cd, gpx->batt ); if (gpx->option.ptu && !err0 && gpx->T > -273.0) { fprintf(stdout, ", \"temp\": %.1f", gpx->T );