diff --git a/rs92/rs92gps_rawin.c b/rs92/rs92gps_rawin.c index f0537e9..081032f 100644 --- a/rs92/rs92gps_rawin.c +++ b/rs92/rs92gps_rawin.c @@ -123,59 +123,47 @@ int findstr(char *buff, char *str, int pos) { } int read_wav_header(FILE *fp) { - char txt[5] = "\0\0\0\0"; - char buff[4]; + char txt[4+1] = "\0\0\0\0"; + unsigned char dat[4]; int byte, p=0; - // long pos_fmt, pos_dat; - char fmt_[5] = "fmt "; - char data[5] = "data"; - //if (fseek(fp, 0L, SEEK_SET)) return -1; if (fread(txt, 1, 4, fp) < 4) return -1; if (strncmp(txt, "RIFF", 4)) return -1; - + if (fread(txt, 1, 4, fp) < 4) return -1; // pos_WAVE = 8L if (fread(txt, 1, 4, fp) < 4) return -1; - if (fread(txt, 1, 4, fp) < 4) return -1; if (strncmp(txt, "WAVE", 4)) return -1; - // pos_fmt = 12L for ( ; ; ) { if ( (byte=fgetc(fp)) == EOF ) return -1; - buff[p % 4] = byte; + txt[p % 4] = byte; p++; if (p==4) p=0; - if (findstr(buff, fmt_, p) == 4) break; + if (findstr(txt, "fmt ", p) == 4) break; } - - if (fread(buff, 1, 4, fp) < 4) return -1; - //memcpy(&byte, buff, 4); fprintf(stderr, "fmt_length : %04x\n", byte); - if (fread(buff, 1, 2, fp) < 2) return -1; - //byte = buff[0] + (buff[1] << 8); fprintf(stderr, "fmt_tag : %04x\n", byte & 0xFFFF); - if (fread(buff, 1, 2, fp) < 2) return -1; - channels = buff[0] + (buff[1] << 8); - //fprintf(stderr, "channels : %d\n", channels & 0xFFFF); - if (fread(buff, 1, 4, fp) < 4) return -1; - memcpy(&sample_rate, buff, 4); - //fprintf(stderr, "samplerate : %d\n", sample_rate); - if (fread(buff, 1, 4, fp) < 4) return -1; - //memcpy(&byte, buff, 4); fprintf(stderr, "bytes/sec : %d\n", byte); - if (fread(buff, 1, 2, fp) < 2) return -1; - byte = buff[0] + (buff[1] << 8); - //fprintf(stderr, "block_align: %04x\n", byte & 0xFFFF); - if (fread(buff, 1, 2, fp) < 2) return -1; - bits_sample = buff[0] + (buff[1] << 8); - //fprintf(stderr, "bits/sample: %d\n", bits_sample & 0xFFFF); + if (fread(dat, 1, 4, fp) < 4) return -1; + if (fread(dat, 1, 2, fp) < 2) return -1; + + if (fread(dat, 1, 2, fp) < 2) return -1; + channels = dat[0] + (dat[1] << 8); + + if (fread(dat, 1, 4, fp) < 4) return -1; + memcpy(&sample_rate, dat, 4); //sample_rate = dat[0]|(dat[1]<<8)|(dat[2]<<16)|(dat[3]<<24); + + if (fread(dat, 1, 4, fp) < 4) return -1; + if (fread(dat, 1, 2, fp) < 2) return -1; + //byte = dat[0] + (dat[1] << 8); + + if (fread(dat, 1, 2, fp) < 2) return -1; + bits_sample = dat[0] + (dat[1] << 8); // pos_dat = 36L + info - //if (fread(txt, 1, 4, fp) < 4) return -1; - //fprintf(stderr, "data: %s\n", txt); for ( ; ; ) { if ( (byte=fgetc(fp)) == EOF ) return -1; - buff[p % 4] = byte; + txt[p % 4] = byte; p++; if (p==4) p=0; - if (findstr(buff, data, p) == 4) break; + if (findstr(txt, "data", p) == 4) break; } - if (fread(buff, 1, 4, fp) < 4) return -1; + if (fread(dat, 1, 4, fp) < 4) return -1; fprintf(stderr, "sample_rate: %d\n", sample_rate); @@ -690,12 +678,12 @@ int get_pseudorange() { range[prns[j]].chips = 0; continue; } -/* + if (option_vergps != 8) { if ( byteval > 0x10000000 && byteval < 0xF0000000 ) { range[prns[j]].chips = 0; continue; - } -*/ + }} + if ( prns[j] == 0 ) prns[j] = 32; range[prns[j]].chips = byteval; range[prns[j]].time = gpstime; @@ -751,7 +739,7 @@ int get_GPSkoord(int N) { SAT_t Sat_A[4]; SAT_t Sat_B[12]; // N <= 12 - if (option_vergps == 2) { + if (option_vergps == 8) { printf(" sats: "); for (j = 0; j < N; j++) fprintf(stdout, "%2d ", prn[j]); printf("\n"); @@ -759,6 +747,7 @@ int get_GPSkoord(int N) { gpx.lat = gpx.lon = gpx.h = 0; + if (option_vergps != 2) { for (i0=0;i0\n", fpname); + fprintf(stderr, " file: audio.wav or raw_data\n"); fprintf(stderr, " options:\n"); fprintf(stderr, " -v, --verbose\n"); fprintf(stderr, " -r, --raw\n"); fprintf(stderr, " -a, --almanac \n"); fprintf(stderr, " -e, --ephem \n"); + fprintf(stderr, " -g1 (verbose GPS: 4 sats)\n"); + fprintf(stderr, " -g2 (verbose GPS: all sats)\n"); + fprintf(stderr, " -gg (vverbose GPS)\n"); + fprintf(stderr, " --rawin (raw_data file)\n"); return 0; } else if ( (strcmp(*argv, "-v") == 0) || (strcmp(*argv, "--verbose") == 0) ) { @@ -964,8 +981,9 @@ int main(int argc, char *argv[]) { } else return -1; } - else if (strcmp(*argv, "-g" ) == 0) { option_vergps = 1; } // verbose GPS - else if (strcmp(*argv, "-gg") == 0) { option_vergps = 2; } // vverbose GPS + else if (strcmp(*argv, "-g1") == 0) { option_vergps = 1; } // verbose1 GPS + else if (strcmp(*argv, "-g2") == 0) { option_vergps = 2; } // verbose2 GPS (bancroft) + else if (strcmp(*argv, "-gg") == 0) { option_vergps = 8; } // vverbose GPS else if (strcmp(*argv, "--rawin") == 0) { option_rawin = 1; } // raw_txt input else { if (!option_rawin) fp = fopen(*argv, "rb");