kopia lustrzana https://github.com/rs1729/RS
rs41dm_dft: json-output, frame number crc-check
rodzic
f54f3fd5af
commit
923e6b17fd
|
@ -647,9 +647,8 @@ int get_GPS1() {
|
||||||
err = check_CRC(pos_GPS1, pck_GPS1);
|
err = check_CRC(pos_GPS1, pck_GPS1);
|
||||||
if (err) gpx.crc |= crc_GPS1;
|
if (err) gpx.crc |= crc_GPS1;
|
||||||
|
|
||||||
//err = 0;
|
err |= get_GPSweek(); // no plausibility-check
|
||||||
err |= get_GPSweek();
|
err |= get_GPStime(); // no plausibility-check
|
||||||
err |= get_GPStime();
|
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
@ -726,7 +725,7 @@ int get_GPSkoord() {
|
||||||
gpx.lat = lat;
|
gpx.lat = lat;
|
||||||
gpx.lon = lon;
|
gpx.lon = lon;
|
||||||
gpx.alt = alt;
|
gpx.alt = alt;
|
||||||
if ((alt < -1000) || (alt > 80000)) return -3;
|
if ((alt < -1000) || (alt > 80000)) return -3; // plausibility-check: altitude, if ecef=(0,0,0)
|
||||||
|
|
||||||
|
|
||||||
// ECEF-Velocities
|
// ECEF-Velocities
|
||||||
|
@ -765,7 +764,7 @@ int get_GPS3() {
|
||||||
err = check_CRC(pos_GPS3, pck_GPS3);
|
err = check_CRC(pos_GPS3, pck_GPS3);
|
||||||
if (err) gpx.crc |= crc_GPS3;
|
if (err) gpx.crc |= crc_GPS3;
|
||||||
|
|
||||||
err |= get_GPSkoord();
|
err |= get_GPSkoord(); // plausibility-check: altitude, if ecef=(0,0,0)
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
@ -1038,64 +1037,62 @@ int print_position(int ec) {
|
||||||
//fprintf(stdout, " (%.1f %.1f %.1f) ", gpx.vN, gpx.vE, gpx.vU);
|
//fprintf(stdout, " (%.1f %.1f %.1f) ", gpx.vN, gpx.vE, gpx.vU);
|
||||||
fprintf(stdout," vH: %4.1f D: %5.1f° vV: %3.1f ", gpx.vH, gpx.vD, gpx.vU);
|
fprintf(stdout," vH: %4.1f D: %5.1f° vV: %3.1f ", gpx.vH, gpx.vD, gpx.vU);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (option_json){
|
|
||||||
// Print JSON output required by auto_rx.
|
|
||||||
if (!err1 && !err2 && !err3){
|
|
||||||
if (option_ptu && !err0 && gpx.T > -273.0) {
|
|
||||||
printf("\n{ \"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, \"temp\":%.1f }\n", 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.vU, gpx.T );
|
|
||||||
} else {
|
|
||||||
printf("\n{ \"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 }\n", 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.vU );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (option_ptu && !err0) {
|
if (option_ptu && !err0) {
|
||||||
if (gpx.T > -273.0) printf(" T=%.1fC ", gpx.T);
|
if (gpx.T > -273.0) printf(" T=%.1fC ", gpx.T);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//if (output)
|
if (option_crc) { // show CRC-checks (and RS-check)
|
||||||
{
|
fprintf(stdout, " # ");
|
||||||
if (option_crc) {
|
if (option_ecc && ec >= 0 && (gpx.crc & 0x1F) != 0) {
|
||||||
fprintf(stdout, " # ");
|
int pos, blk, len, crc; // unexpected blocks
|
||||||
if (option_ecc && ec >= 0 && (gpx.crc & 0x1F) != 0) {
|
int flen = NDATA_LEN;
|
||||||
int pos, blk, len, crc; // unexpected blocks
|
if (frametype() < 0) flen += XDATA_LEN;
|
||||||
int flen = NDATA_LEN;
|
pos = pos_FRAME;
|
||||||
if (frametype() < 0) flen += XDATA_LEN;
|
while (pos < flen-1) {
|
||||||
pos = pos_FRAME;
|
blk = frame[pos]; // 0x80XX: encrypted block
|
||||||
while (pos < flen-1) {
|
len = frame[pos+1]; // 0x76XX: 00-padding block
|
||||||
blk = frame[pos]; // 0x80XX: encrypted block
|
crc = check_CRC(pos, blk<<8);
|
||||||
len = frame[pos+1]; // 0x76XX: 00-padding block
|
fprintf(stdout, " %02X%02X", frame[pos], frame[pos+1]);
|
||||||
crc = check_CRC(pos, blk<<8);
|
fprintf(stdout, "[%d]", crc&1);
|
||||||
fprintf(stdout, " %02X%02X", frame[pos], frame[pos+1]);
|
pos = pos+2+len+2;
|
||||||
fprintf(stdout, "[%d]", crc&1);
|
|
||||||
pos = pos+2+len+2;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else {
|
}
|
||||||
fprintf(stdout, "[");
|
else {
|
||||||
for (i=0; i<5; i++) fprintf(stdout, "%d", (gpx.crc>>i)&1);
|
fprintf(stdout, "[");
|
||||||
fprintf(stdout, "]");
|
for (i=0; i<5; i++) fprintf(stdout, "%d", (gpx.crc>>i)&1);
|
||||||
}
|
fprintf(stdout, "]");
|
||||||
if (option_ecc == 2) {
|
}
|
||||||
if (ec > 0) fprintf(stdout, " (%d)", ec);
|
if (option_ecc == 2) {
|
||||||
if (ec < 0) {
|
if (ec > 0) fprintf(stdout, " (%d)", ec);
|
||||||
if (ec == -1) fprintf(stdout, " (-+)");
|
if (ec < 0) {
|
||||||
else if (ec == -2) fprintf(stdout, " (+-)");
|
if (ec == -1) fprintf(stdout, " (-+)");
|
||||||
else /*ec == -3*/ fprintf(stdout, " (--)");
|
else if (ec == -2) fprintf(stdout, " (+-)");
|
||||||
}
|
else /*ec == -3*/ fprintf(stdout, " (--)");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
get_Calconf(output);
|
get_Calconf(output);
|
||||||
|
|
||||||
//if (output)
|
if (option_verbose > 1) get_Aux();
|
||||||
{
|
|
||||||
if (option_verbose > 1) get_Aux();
|
fprintf(stdout, "\n"); // fflush(stdout);
|
||||||
fprintf(stdout, "\n"); // fflush(stdout);
|
|
||||||
|
|
||||||
|
if (option_json) {
|
||||||
|
// Print JSON output required by auto_rx.
|
||||||
|
if (!err && !err1 && !err3) { // frame-nb/id && gps-time && gps-position (crc-)ok; 3 CRCs, RS not needed
|
||||||
|
if (option_ptu && !err0 && gpx.T > -273.0) {
|
||||||
|
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, \"temp\":%.1f }\n", 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.vU, gpx.T );
|
||||||
|
} else {
|
||||||
|
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 }\n", 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.vU );
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
err |= err1 | err3;
|
err |= err1 | err3;
|
||||||
|
@ -1227,7 +1224,7 @@ int main(int argc, char *argv[]) {
|
||||||
else if (strcmp(*argv, "--std2") == 0) { frmlen = 518; } // NDATA_LEN+XDATA_LEN
|
else if (strcmp(*argv, "--std2") == 0) { frmlen = 518; } // NDATA_LEN+XDATA_LEN
|
||||||
else if (strcmp(*argv, "--sat") == 0) { option_sat = 1; }
|
else if (strcmp(*argv, "--sat") == 0) { option_sat = 1; }
|
||||||
else if (strcmp(*argv, "--ptu") == 0) { option_ptu = 1; }
|
else if (strcmp(*argv, "--ptu") == 0) { option_ptu = 1; }
|
||||||
else if (strcmp(*argv, "--json") == 0) { option_json = 1; }
|
else if (strcmp(*argv, "--json") == 0) { option_json = 1; option_ecc = 2; option_crc = 1; }
|
||||||
else if (strcmp(*argv, "--ch2") == 0) { wav_channel = 1; } // right channel (default: 0=left)
|
else if (strcmp(*argv, "--ch2") == 0) { wav_channel = 1; } // right channel (default: 0=left)
|
||||||
else if (strcmp(*argv, "--ths") == 0) {
|
else if (strcmp(*argv, "--ths") == 0) {
|
||||||
++argv;
|
++argv;
|
||||||
|
|
Ładowanie…
Reference in New Issue