m10mod/mXXmod, rs92mod: rawhex input

pull/37/head
Zilog80 2020-12-31 16:30:21 +01:00
rodzic f9bb77ac75
commit c13e34239c
3 zmienionych plików z 544 dodań i 444 usunięć

Wyświetl plik

@ -1018,13 +1018,15 @@ static int print_pos(gpx_t *gpx, int csOK) {
return err;
}
static int print_frame(gpx_t *gpx, int pos) {
static int print_frame(gpx_t *gpx, int pos, int b2B) {
int i;
ui8_t byte;
int cs1, cs2;
int flen = stdFLEN; // stdFLEN=0x64, auxFLEN=0x76
if (b2B) {
bits2bytes(gpx->frame_bits, gpx->frame_bytes);
}
flen = gpx->frame_bytes[0];
if (flen == stdFLEN) gpx->auxlen = 0;
else {
@ -1128,6 +1130,7 @@ int main(int argc, char **argv) {
int wavloaded = 0;
int sel_wavch = 0; // audio channel: left
int spike = 0;
int rawhex = 0;
int cfreq = -1;
FILE *fp = NULL;
@ -1244,6 +1247,7 @@ int main(int argc, char **argv) {
if (frq < 300000000) frq = -1;
cfreq = frq;
}
else if (strcmp(*argv, "--rawhex") == 0) { rawhex = 2; } // raw hex input
else if (strcmp(*argv, "-") == 0) {
int sample_rate = 0, bits_sample = 0, channels = 0;
++argv;
@ -1290,6 +1294,7 @@ int main(int argc, char **argv) {
}
#endif
if (!rawhex) {
if (!option_softin) {
if (option_iq == 0 && option_pcmraw) {
@ -1438,7 +1443,7 @@ int main(int argc, char **argv) {
bitpos += 1;
}
gpx.frame_bits[pos] = '\0';
print_frame(&gpx, pos);
print_frame(&gpx, pos, 1);
if (pos < BITFRAME_LEN) break;
header_found = 0;
@ -1462,11 +1467,40 @@ int main(int argc, char **argv) {
}
}
if (!option_softin) free_buffers(&dsp);
else {
if (hdb.buf) { free(hdb.buf); hdb.buf = NULL; }
}
}
else //if (rawhex)
{
char buffer_rawhex[2*(FRAME_LEN+AUX_LEN)+12];
char *pbuf = NULL, *buf_sp = NULL;
ui8_t frmbyte;
int frameofs = 0, len, i;
while (1 > 0) {
memset(buffer_rawhex, 2*(FRAME_LEN+AUX_LEN)+12, 0);
pbuf = fgets(buffer_rawhex, 2*(FRAME_LEN+AUX_LEN)+12, fp);
if (pbuf == NULL) break;
buffer_rawhex[2*(FRAME_LEN+AUX_LEN)] = '\0';
buf_sp = strchr(buffer_rawhex, ' ');
if (buf_sp != NULL && buf_sp-buffer_rawhex < 2*(FRAME_LEN+AUX_LEN)) {
buffer_rawhex[buf_sp-buffer_rawhex] = '\0';
for (i = buf_sp-buffer_rawhex+1; i < 2*(FRAME_LEN+AUX_LEN); i++) buffer_rawhex[i] = '\0';
}
len = strlen(buffer_rawhex) / 2;
if (len > pos_GPSweek+2) {
for (i = 0; i < len; i++) { //%2x SCNx8=%hhx(inttypes.h)
sscanf(buffer_rawhex+2*i, "%2hhx", &frmbyte);
// wenn ohne %hhx: sscanf(buffer_rawhex+rawhex*i, "%2x", &byte); frame[frameofs+i] = (ui8_t)byte;
gpx.frame_bytes[frameofs+i] = frmbyte;
}
print_frame(&gpx, len*8, 0);
}
}
}
fclose(fp);

Wyświetl plik

@ -656,14 +656,16 @@ static int print_pos(gpx_t *gpx, int bcOK, int csOK) {
return err;
}
static int print_frame(gpx_t *gpx, int pos) {
static int print_frame(gpx_t *gpx, int pos, int b2B) {
int i;
ui8_t byte;
int cs1, cs2;
int bc1, bc2;
int flen = stdFLEN; // stdFLEN=0x64, auxFLEN=0x76; M20:0x45 ?
if (b2B) {
bits2bytes(gpx->frame_bits, gpx->frame_bytes);
}
flen = gpx->frame_bytes[0];
if (flen == stdFLEN) gpx->auxlen = 0;
else {
@ -767,6 +769,7 @@ int main(int argc, char **argv) {
int wavloaded = 0;
int sel_wavch = 0; // audio channel: left
int spike = 0;
int rawhex = 0;
int cfreq = -1;
float baudrate = -1;
@ -892,6 +895,7 @@ int main(int argc, char **argv) {
if (frq < 300000000) frq = -1;
cfreq = frq;
}
else if (strcmp(*argv, "--rawhex") == 0) { rawhex = 2; } // raw hex input
else if (strcmp(*argv, "-") == 0) {
int sample_rate = 0, bits_sample = 0, channels = 0;
++argv;
@ -938,6 +942,7 @@ int main(int argc, char **argv) {
}
#endif
if (!rawhex) {
if (!option_softin) {
if (option_iq == 0 && option_pcmraw) {
@ -1088,7 +1093,7 @@ int main(int argc, char **argv) {
bitpos += 1;
}
gpx.frame_bits[pos] = '\0';
print_frame(&gpx, pos);
print_frame(&gpx, pos, 1);
if (pos < BITFRAME_LEN) break;
header_found = 0;
@ -1106,11 +1111,40 @@ int main(int argc, char **argv) {
}
}
if (!option_softin) free_buffers(&dsp);
else {
if (hdb.buf) { free(hdb.buf); hdb.buf = NULL; }
}
}
else //if (rawhex)
{
char buffer_rawhex[2*(FRAME_LEN+AUX_LEN)+12];
char *pbuf = NULL, *buf_sp = NULL;
ui8_t frmbyte;
int frameofs = 0, len, i;
while (1 > 0) {
memset(buffer_rawhex, 2*(FRAME_LEN+AUX_LEN)+12, 0);
pbuf = fgets(buffer_rawhex, 2*(FRAME_LEN+AUX_LEN)+12, fp);
if (pbuf == NULL) break;
buffer_rawhex[2*(FRAME_LEN+AUX_LEN)] = '\0';
buf_sp = strchr(buffer_rawhex, ' ');
if (buf_sp != NULL && buf_sp-buffer_rawhex < 2*(FRAME_LEN+AUX_LEN)) {
buffer_rawhex[buf_sp-buffer_rawhex] = '\0';
for (i = buf_sp-buffer_rawhex+1; i < 2*(FRAME_LEN+AUX_LEN); i++) buffer_rawhex[i] = '\0';
}
len = strlen(buffer_rawhex) / 2;
if (len > pos_GPSweek+2) {
for (i = 0; i < len; i++) { //%2x SCNx8=%hhx(inttypes.h)
sscanf(buffer_rawhex+2*i, "%2hhx", &frmbyte);
// wenn ohne %hhx: sscanf(buffer_rawhex+rawhex*i, "%2x", &byte); frame[frameofs+i] = (ui8_t)byte;
gpx.frame_bytes[frameofs+i] = frmbyte;
}
print_frame(&gpx, len*8, 0);
}
}
}
fclose(fp);

Wyświetl plik

@ -1251,6 +1251,7 @@ int main(int argc, char *argv[]) {
int sel_wavch = 0; // audio channel: left
int spike = 0;
int fileloaded = 0;
int rawhex = 0;
int cfreq = -1;
char bitbuf[BITS];
@ -1443,6 +1444,7 @@ int main(int argc, char *argv[]) {
option_min = 1;
}
else if (strcmp(*argv, "--ngp") == 0) { gpx.option.ngp = 1; } // RS92-NGP, RS92-D: 1680 MHz
else if (strcmp(*argv, "--rawhex") == 0) { rawhex = 2; } // raw hex input
else if (strcmp(*argv, "-") == 0) {
int sample_rate = 0, bits_sample = 0, channels = 0;
++argv;
@ -1512,6 +1514,8 @@ int main(int argc, char *argv[]) {
}
#endif
if (!rawhex) {
if (!option_softin) {
if (option_iq == 0 && option_pcmraw) {
@ -1678,6 +1682,34 @@ int main(int argc, char *argv[]) {
else {
if (hdb.buf) { free(hdb.buf); hdb.buf = NULL; }
}
}
else //if (rawhex)
{
char buffer_rawhex[2*FRAME_LEN+12];
char *pbuf = NULL, *buf_sp = NULL;
ui8_t frmbyte;
int frameofs = 0, len, i;
while (1 > 0) {
pbuf = fgets(buffer_rawhex, 2*FRAME_LEN+12, fp);
if (pbuf == NULL) break;
buffer_rawhex[2*FRAME_LEN] = '\0';
buf_sp = strchr(buffer_rawhex, ' ');
if (buf_sp != NULL && buf_sp-buffer_rawhex < 2*FRAME_LEN) {
buffer_rawhex[buf_sp-buffer_rawhex] = '\0';
}
len = strlen(buffer_rawhex) / 2;
if (len > posGPS_TOW+4) {
for (i = 0; i < len; i++) { //%2x SCNx8=%hhx(inttypes.h)
sscanf(buffer_rawhex+2*i, "%2hhx", &frmbyte);
// wenn ohne %hhx: sscanf(buffer_rawhex+rawhex*i, "%2x", &byte); frame[frameofs+i] = (ui8_t)byte;
gpx.frame[frameofs+i] = frmbyte;
}
print_frame(&gpx, frameofs+len);
}
}
}
if (gpx.gps.ephs) free(gpx.gps.ephs);