From 048080374ea80c785ffbae9d49584c47214d8474 Mon Sep 17 00:00:00 2001 From: Zilog80 Date: Sun, 31 Jan 2021 20:28:34 +0100 Subject: [PATCH] json: optional JSON version output, global or local define --- c34/c50dft.c | 16 ++++++++++++++++ demod/mod/dfm09mod.c | 15 +++++++++++++++ demod/mod/imet54mod.c | 16 ++++++++++++++++ demod/mod/lms6Xmod.c | 15 +++++++++++++++ demod/mod/m10mod.c | 15 +++++++++++++++ demod/mod/mXXmod.c | 15 +++++++++++++++ demod/mod/meisei100mod.c | 16 ++++++++++++++++ demod/mod/rs41mod.c | 16 ++++++++++++++++ demod/mod/rs92mod.c | 15 +++++++++++++++ demod/mod/version_jsn.h | 18 ++++++++++++++++++ imet/imet1rs_dft.c | 25 ++++++++++++++++++++----- mk2a/mk2a_lms1680.c | 15 +++++++++++++++ 12 files changed, 192 insertions(+), 5 deletions(-) create mode 100644 demod/mod/version_jsn.h diff --git a/c34/c50dft.c b/c34/c50dft.c index 1c2967f..25f4b97 100644 --- a/c34/c50dft.c +++ b/c34/c50dft.c @@ -11,6 +11,17 @@ #include #include +// optional JSON "version" +// (a) set global +// gcc -DVERSION_JSN [-I] ... +#ifdef VERSION_JSN + #include "version_jsn.h" +#endif +// or +// (b) set local compiler option, e.g. +// gcc -DVER_JSN_STR=\"0.0.2\" ... + + typedef unsigned char ui8_t; static int option_verbose = 0, @@ -325,6 +336,7 @@ static void printGPX() { static void printJSON() { // UTC or GPS time ? + char *ver_jsn = NULL; char json_sonde_id[] = "C50-xxxx\0\0\0\0\0\0\0"; if (gpx.sn) { sprintf(json_sonde_id, "C50-%u", gpx.sn); @@ -340,6 +352,10 @@ static void printJSON() { if (gpx.jsn_freq > 0) { printf(", \"freq\": %d", gpx.jsn_freq); } + #ifdef VER_JSN_STR + ver_jsn = VER_JSN_STR; + #endif + if (ver_jsn && *ver_jsn != '\0') printf(", \"version\": \"%s\"", ver_jsn); printf(" }\n"); //printf("\n"); } diff --git a/demod/mod/dfm09mod.c b/demod/mod/dfm09mod.c index c068af2..1779534 100644 --- a/demod/mod/dfm09mod.c +++ b/demod/mod/dfm09mod.c @@ -20,6 +20,16 @@ #include #endif +// optional JSON "version" +// (a) set global +// gcc -DVERSION_JSN [-I] ... +#ifdef VERSION_JSN + #include "version_jsn.h" +#endif +// or +// (b) set local compiler option, e.g. +// gcc -DVER_JSN_STR=\"0.0.2\" ... + #include "demod_mod.h" @@ -781,6 +791,7 @@ static void print_gpx(gpx_t *gpx) { if (gpx->option.jsn && jsonout && gpx->sek < 60.0) { + char *ver_jsn = NULL; unsigned long sec_gps = 0; int week = 0; int tow = 0; @@ -814,6 +825,10 @@ static void print_gpx(gpx_t *gpx) { if (gpx->jsn_freq > 0) { printf(", \"freq\": %d", gpx->jsn_freq); } + #ifdef VER_JSN_STR + ver_jsn = VER_JSN_STR; + #endif + if (ver_jsn && *ver_jsn != '\0') printf(", \"version\": \"%s\"", ver_jsn); printf(" }\n"); printf("\n"); } diff --git a/demod/mod/imet54mod.c b/demod/mod/imet54mod.c index 5f87bdd..3be89cb 100644 --- a/demod/mod/imet54mod.c +++ b/demod/mod/imet54mod.c @@ -20,6 +20,17 @@ #include #endif +// optional JSON "version" +// (a) set global +// gcc -DVERSION_JSN [-I] ... +#ifdef VERSION_JSN + #include "version_jsn.h" +#endif +// or +// (b) set local compiler option, e.g. +// gcc -DVER_JSN_STR=\"0.0.2\" ... + + //typedef unsigned char ui8_t; //typedef unsigned short ui16_t; //typedef unsigned int ui32_t; @@ -431,6 +442,7 @@ static int print_position(gpx_t *gpx, int len, int ecc_frm, int ecc_gps) { // prnGPS,prnTPU if (gpx->option.jsn && frm_ok && (gpx->status&0x30)==0x30) { + char *ver_jsn = NULL; unsigned long count_day = (unsigned long)(gpx->std*3600 + gpx->min*60 + gpx->sek+0.5); // (gpx->timems/1e3+0.5) has gaps fprintf(stdout, "{ \"type\": \"%s\"", "IMET5"); fprintf(stdout, ", \"frame\": %lu", count_day); @@ -448,6 +460,10 @@ static int print_position(gpx_t *gpx, int len, int ecc_frm, int ecc_gps) { if (gpx->jsn_freq > 0) { fprintf(stdout, ", \"freq\": %d", gpx->jsn_freq); } + #ifdef VER_JSN_STR + ver_jsn = VER_JSN_STR; + #endif + if (ver_jsn && *ver_jsn != '\0') fprintf(stdout, ", \"version\": \"%s\"", ver_jsn); fprintf(stdout, " }\n"); fprintf(stdout, "\n"); } diff --git a/demod/mod/lms6Xmod.c b/demod/mod/lms6Xmod.c index e07d5a6..97fbc7f 100644 --- a/demod/mod/lms6Xmod.c +++ b/demod/mod/lms6Xmod.c @@ -35,6 +35,16 @@ #include #endif +// optional JSON "version" +// (a) set global +// gcc -DVERSION_JSN [-I] ... +#ifdef VERSION_JSN + #include "version_jsn.h" +#endif +// or +// (b) set local compiler option, e.g. +// gcc -DVER_JSN_STR=\"0.0.2\" ... + //typedef unsigned char ui8_t; //typedef unsigned short ui16_t; @@ -752,6 +762,7 @@ static void print_frame(gpx_t *gpx, int crc_err, int len) { // Print JSON output required by auto_rx. if (crc_err==0) { // CRC-OK // UTC oder GPS? + char *ver_jsn = NULL; char sntyp[] = "LMS6-"; if (gpx->typ == 10) sntyp[3] = 'X'; printf("{ \"type\": \"%s\"", "LMS"); @@ -764,6 +775,10 @@ static void print_frame(gpx_t *gpx, int crc_err, int len) { if (gpx->jsn_freq > 0) { printf(", \"freq\": %d", gpx->jsn_freq); } + #ifdef VER_JSN_STR + ver_jsn = VER_JSN_STR; + #endif + if (ver_jsn && *ver_jsn != '\0') printf(", \"version\": \"%s\"", ver_jsn); printf(" }\n"); printf("\n"); } diff --git a/demod/mod/m10mod.c b/demod/mod/m10mod.c index ab87156..f7df7ec 100644 --- a/demod/mod/m10mod.c +++ b/demod/mod/m10mod.c @@ -20,6 +20,16 @@ #include #endif +// optional JSON "version" +// (a) set global +// gcc -DVERSION_JSN [-I] ... +#ifdef VERSION_JSN + #include "version_jsn.h" +#endif +// or +// (b) set local compiler option, e.g. +// gcc -DVER_JSN_STR=\"0.0.2\" ... + #include "demod_mod.h" @@ -955,6 +965,7 @@ static int print_pos(gpx_t *gpx, int csOK) { if (gpx->option.jsn) { // Print out telemetry data as JSON if (csOK) { + char *ver_jsn = NULL; int j; char sn_id[4+12] = "M10-"; ui8_t aprs_id[4]; @@ -1012,6 +1023,10 @@ static int print_pos(gpx_t *gpx, int csOK) { if (gpx->jsn_freq > 0) { fprintf(stdout, ", \"freq\": %d", gpx->jsn_freq); } + #ifdef VER_JSN_STR + ver_jsn = VER_JSN_STR; + #endif + if (ver_jsn && *ver_jsn != '\0') fprintf(stdout, ", \"version\": \"%s\"", ver_jsn); fprintf(stdout, " }\n"); fprintf(stdout, "\n"); } diff --git a/demod/mod/mXXmod.c b/demod/mod/mXXmod.c index c7d259a..2bce2f5 100644 --- a/demod/mod/mXXmod.c +++ b/demod/mod/mXXmod.c @@ -27,6 +27,16 @@ #include #endif +// optional JSON "version" +// (a) set global +// gcc -DVERSION_JSN [-I] ... +#ifdef VERSION_JSN + #include "version_jsn.h" +#endif +// or +// (b) set local compiler option, e.g. +// gcc -DVER_JSN_STR=\"0.0.2\" ... + #include "demod_mod.h" @@ -635,6 +645,7 @@ static int print_pos(gpx_t *gpx, int bcOK, int csOK) { if (gpx->option.jsn) { // Print out telemetry data as JSON if (csOK) { + char *ver_jsn = NULL; int j; char sn_id[4+12] = "M20-"; double sec_gps0 = (double)gpx->week*SECONDS_IN_WEEK + gpx->tow_ms/1e3; @@ -652,6 +663,10 @@ static int print_pos(gpx_t *gpx, int bcOK, int csOK) { if (gpx->jsn_freq > 0) { fprintf(stdout, ", \"freq\": %d", gpx->jsn_freq); } + #ifdef VER_JSN_STR + ver_jsn = VER_JSN_STR; + #endif + if (ver_jsn && *ver_jsn != '\0') fprintf(stdout, ", \"version\": \"%s\"", ver_jsn); fprintf(stdout, " }\n"); fprintf(stdout, "\n"); } diff --git a/demod/mod/meisei100mod.c b/demod/mod/meisei100mod.c index 419a217..9597f41 100644 --- a/demod/mod/meisei100mod.c +++ b/demod/mod/meisei100mod.c @@ -102,6 +102,17 @@ e.g. -b --br 2398 #include #endif +// optional JSON "version" +// (a) set global +// gcc -DVERSION_JSN [-I] ... +#ifdef VERSION_JSN + #include "version_jsn.h" +#endif +// or +// (b) set local compiler option, e.g. +// gcc -DVER_JSN_STR=\"0.0.2\" ... + + //typedef unsigned char ui8_t; //typedef unsigned short ui16_t; //typedef unsigned int ui32_t; @@ -911,6 +922,7 @@ int main(int argc, char **argv) { printf("\n"); if (option_jsn && err_frm==0 && gps_err==0) { + char *ver_jsn = NULL; char id_str[] = "xxxxxx\0\0\0\0\0\0"; if (gpx.sn > 0 && gpx.sn < 1e9) { sprintf(id_str, "%.0f", gpx.sn); @@ -922,6 +934,10 @@ int main(int argc, char **argv) { if (gpx.jsn_freq > 0) { // not gpx.fq, because gpx.sn not in every frame printf(", \"freq\": %d", gpx.jsn_freq); } + #ifdef VER_JSN_STR + ver_jsn = VER_JSN_STR; + #endif + if (ver_jsn && *ver_jsn != '\0') printf(", \"version\": \"%s\"", ver_jsn); printf(" }\n"); printf("\n"); } diff --git a/demod/mod/rs41mod.c b/demod/mod/rs41mod.c index e221e4b..01c3d8a 100644 --- a/demod/mod/rs41mod.c +++ b/demod/mod/rs41mod.c @@ -25,6 +25,17 @@ #include #endif +// optional JSON "version" +// (a) set global +// gcc -DVERSION_JSN [-I] ... +#ifdef VERSION_JSN + #include "version_jsn.h" +#endif +// or +// (b) set local compiler option, e.g. +// gcc -DVER_JSN_STR=\"0.0.2\" ... + + //typedef unsigned char ui8_t; //typedef unsigned short ui16_t; //typedef unsigned int ui32_t; @@ -1801,6 +1812,7 @@ 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) + char *ver_jsn = NULL; 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 ); @@ -1833,6 +1845,10 @@ static int print_position(gpx_t *gpx, int ec) { if (gpx->freq > 0) fq_kHz = gpx->freq; fprintf(stdout, ", \"freq\": %d", fq_kHz); } + #ifdef VER_JSN_STR + ver_jsn = VER_JSN_STR; + #endif + if (ver_jsn && *ver_jsn != '\0') fprintf(stdout, ", \"version\": \"%s\"", ver_jsn); fprintf(stdout, " }\n"); fprintf(stdout, "\n"); } diff --git a/demod/mod/rs92mod.c b/demod/mod/rs92mod.c index c842735..1c89fa4 100644 --- a/demod/mod/rs92mod.c +++ b/demod/mod/rs92mod.c @@ -25,6 +25,16 @@ #include #endif +// optional JSON "version" +// (a) set global +// gcc -DVERSION_JSN [-I] ... +#ifdef VERSION_JSN + #include "version_jsn.h" +#endif +// or +// (b) set local compiler option, e.g. +// gcc -DVER_JSN_STR=\"0.0.2\" ... + //typedef unsigned char ui8_t; //typedef unsigned short ui16_t; @@ -1178,6 +1188,7 @@ static int print_position(gpx_t *gpx, int ec) { // GPS-Hoehe ueber Ellipsoid // Print out telemetry data as JSON //even if we don't have a valid GPS lock if ((gpx->crc & (crc_FRAME | crc_GPS))==0 && (gpx->gps.almanac || gpx->gps.ephem)) //(!err1 && !err3) { // eigentlich GPS, d.h. UTC = GPS - UTC_OFS (UTC_OFS=18sec ab 1.1.2017) + char *ver_jsn = NULL; fprintf(stdout, "\n"); fprintf(stdout, "{ \"type\": \"%s\"", "RS92"); 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", @@ -1190,6 +1201,10 @@ static int print_position(gpx_t *gpx, int ec) { // GPS-Hoehe ueber Ellipsoid //if (gpx->freq > 0) fq_kHz = gpx->freq; // L-band: option.ngp ? fprintf(stdout, ", \"freq\": %d", fq_kHz); } + #ifdef VER_JSN_STR + ver_jsn = VER_JSN_STR; + #endif + if (ver_jsn && *ver_jsn != '\0') fprintf(stdout, ", \"version\": \"%s\"", ver_jsn); fprintf(stdout, " }\n"); } } diff --git a/demod/mod/version_jsn.h b/demod/mod/version_jsn.h new file mode 100644 index 0000000..074a102 --- /dev/null +++ b/demod/mod/version_jsn.h @@ -0,0 +1,18 @@ +#ifndef VERSION_JSN_H +#define VERSION_JSN_H + +/* + compile options + (a) -DVERSION_JSN [-I] (set global) + (b) -DVER_JSN_STR=\"0.0.2\" (set local) +*/ + +// e.g. global option (a) +// #define VER_JSN_STR "0.0.1" + +#define VER_JSN_STR "" + + + +#endif /* VERSION_JSN_H */ + diff --git a/imet/imet1rs_dft.c b/imet/imet1rs_dft.c index e5bdb05..0625021 100644 --- a/imet/imet1rs_dft.c +++ b/imet/imet1rs_dft.c @@ -10,6 +10,17 @@ #include #include +// optional JSON "version" +// (a) set global +// gcc -DVERSION_JSN [-I] ... +#ifdef VERSION_JSN + #include "version_jsn.h" +#endif +// or +// (b) set local compiler option, e.g. +// gcc -DVER_JSN_STR=\"0.0.2\" ... + + typedef unsigned char ui8_t; int option_verbose = 0, // ausfuehrliche Anzeige @@ -429,15 +440,19 @@ int print_frame(int len) { if (option_json) { if (gpx.gps_valid && gpx.ptu_valid) // frameNb part of PTU-pck { + char *ver_jsn = NULL; fprintf(stdout, "{ \"type\": \"%s\"", "IMET"); fprintf(stdout, ", \"frame\": %d, \"id\": \"iMet\", \"datetime\": \"%02d:%02d:%02dZ\", \"lat\": %.5f, \"lon\": %.5f, \"alt\": %d, \"sats\": %d, \"temp\": %.2f, \"humidity\": %.2f, \"pressure\": %.2f, \"batt\": %.1f", gpx.frame, gpx.hour, gpx.min, gpx.sec, gpx.lat, gpx.lon, gpx.alt, gpx.sats, gpx.temp, gpx.humidity, gpx.pressure, gpx.batt); + if (gpx.jsn_freq > 0) { + fprintf(stdout, ", \"freq\": %d", gpx.jsn_freq); + } + #ifdef VER_JSN_STR + ver_jsn = VER_JSN_STR; + #endif + if (ver_jsn && *ver_jsn != '\0') fprintf(stdout, ", \"version\": \"%s\"", ver_jsn); + fprintf(stdout, " }\n"); } - if (gpx.jsn_freq > 0) { - fprintf(stdout, ", \"freq\": %d", gpx.jsn_freq); - } - fprintf(stdout, " }\n"); - } if (out) fprintf(stdout, "\n"); diff --git a/mk2a/mk2a_lms1680.c b/mk2a/mk2a_lms1680.c index bf537e4..20c910f 100644 --- a/mk2a/mk2a_lms1680.c +++ b/mk2a/mk2a_lms1680.c @@ -9,6 +9,16 @@ #include #include +// optional JSON "version" +// (a) set global +// gcc -DVERSION_JSN [-I] ... +#ifdef VERSION_JSN + #include "version_jsn.h" +#endif +// or +// (b) set local compiler option, e.g. +// gcc -DVER_JSN_STR=\"0.0.2\" ... + typedef unsigned char ui8_t; typedef unsigned short ui16_t; @@ -639,6 +649,7 @@ void print_frame(int len) { if (crc_err==0 && (gpx.id & 0xFFFF0000)) { // CRC-OK and FullID if (gpx.prev_frnr != gpx.frnr) { //|| gpx.id != _id0 // UTC oder GPS? + char *ver_jsn = NULL; printf("{ \"type\": \"%s\"", "LMS"); printf(", \"frame\": %d, \"id\": \"LMS6-%d\", \"datetime\": \"%02d:%02d:%06.3fZ\", \"lat\": %.5f, \"lon\": %.5f, \"alt\": %.5f, \"vel_h\": %.5f, \"heading\": %.5f, \"vel_v\": %.5f", gpx.frnr, gpx.id, gpx.std, gpx.min, gpx.sek, gpx.lat, gpx.lon, gpx.alt, gpx.vH, gpx.vD, gpx.vV ); @@ -646,6 +657,10 @@ void print_frame(int len) { if (gpx.jsn_freq > 0) { printf(", \"freq\": %d", gpx.jsn_freq); } + #ifdef VER_JSN_STR + ver_jsn = VER_JSN_STR; + #endif + if (ver_jsn && *ver_jsn != '\0') printf(", \"version\": \"%s\"", ver_jsn); printf(" }\n"); printf("\n"); gpx.prev_frnr = gpx.frnr;