RS92: delta_chips/velocity

dump
Zilog80 2016-10-11 15:35:49 +02:00
rodzic 22ea34524a
commit 5c2693f3e3
3 zmienionych plików z 187 dodań i 70 usunięć

Wyświetl plik

@ -53,22 +53,30 @@ FE 01 -> 405.10 MHz (Meppen 9 Uhr/Lindenberg)
GPS TOW (gps time of week)
(Receiver: Common Transmission Time vs Common Reception Time)
0x4E:
PRN
0x4E..0x55: GPS PRN
12*5 bit = 60 bit, auf 8 byte verteilt:
little endian
00000111 1122222x
33333444 4455555x
66666777 7788888x
99999AAA AABBBBBx
PRN-32, 6.bit:
Entweder es ist die 3.PRN in dem Block und dann steht es im sonst nicht genutzten 16.bit x,
oder wenn im 16-bit-Block noch eine weitere PRN folgt,
dann ist diese entweder PRN-1 oder eine gerade PRN,
so dass man im letzteren Fall das unterste Bit wieder loescht.
Das Status-Byte sollte anzeigen, dass es sich davor tatsaechlich um PRN-32 handelt
und nicht um einen Satelliten, der noch nicht gelockt ist.
0x56..0x61: 12 byte STATUS
0x56..0x61: 12 byte GPS STATUS
0x62: 12*8 byte GPS DATA
4 byte pseudochips, 3 byte doppler, 1 byte
4 byte pseudochips; 3 byte delta_chips/385; 1 byte
pseudochip-counter 32bit-fract, Faktor 2^(-10)=1/1024
df = c/(chips/sec) / 2^10 = 299792.458/1023.0/1024.0 = 0.286183844 // c=299792458m/s, 1023000chips/s
pseudorange[m] = - df[m/chips] * pseudochips[chips]
delta(pseudochips, 1s) = delta_chips/385
delta(pseudochips) = ca 25800 +/- d,
+ sat kommt naeher
- sat entfernt sich
@ -76,6 +84,9 @@ d.h. chip-counter zaehlt, wieviele chips im Intervall schon empfangen wurden;
wenn sat sich entfernt, weniger chips.
nach ca 14 min reset
Geschwindigkeit kann aus 1sec-ECEF-Differenz von pseudochips und delta_chips/385
errechnet werden.
Bei GPS-Loesung ist DOP-Wert der Konstellation wichtig fuer die Genauigkeit.
Bei almanac-Daten 500-1000m Fehler moeglich, rinex-ephemeris deutlich genauer.

Wyświetl plik

@ -91,6 +91,7 @@ typedef struct {
int wday;
int std; int min; float sek;
double lat; double lon; double h;
double vH; double vD; double vU;
int sats[4];
double dop;
unsigned short aux[4];
@ -108,6 +109,7 @@ int option_verbose = 0, // ausfuehrliche Anzeige
option_ecc = 0, // Reed-Solomon ECC
fileloaded = 0,
option_vergps = 0,
option_vel = 0, // velocity
rawin = 0;
double dop_limit = 9.9;
@ -595,22 +597,23 @@ int get_Cal() {
calfr = byte;
if (option_verbose == 2) {
fprintf(stderr, "[%5d] ", gpx.frnr);
fprintf(stderr, " 0x%02x:", calfr);
fprintf(stdout, "\n");
fprintf(stdout, "[%5d] ", gpx.frnr);
fprintf(stdout, " 0x%02x:", calfr);
}
for (i = 0; i < 16; i++) {
byte = framebyte(pos_CalData+1+i);
if (option_verbose == 2) {
fprintf(stderr, " %02x", byte);
fprintf(stdout, " %02x", byte);
}
}
if (option_verbose) {
get_Aux();
if (option_verbose == 2) {
fprintf(stderr, " # ");
fprintf(stdout, " # ");
for (i = 0; i < 8; i++) {
byte = framebyte(pos_AuxData+i);
fprintf(stderr, "%02x ", byte);
fprintf(stdout, "%02x ", byte);
}
}
else {
@ -631,10 +634,6 @@ int get_Cal() {
fprintf(stdout, " : freq %d kHz", freq);
}
if (option_verbose == 2) {
fprintf(stderr, "\n");
}
return 0;
}
@ -648,7 +647,8 @@ EPHEM_t alm[33];
//EPHEM_t eph[33][24];
EPHEM_t *ephs = NULL;
SAT_t sat[33];
SAT_t sat[33],
sat1s[33];
ui8_t prn_le[12*5+4];
@ -826,7 +826,7 @@ typedef struct {
ui32_t tow;
ui8_t status;
int chips;
int ca;
int deltachips;
} RANGE_t;
RANGE_t range[33];
@ -840,7 +840,7 @@ int get_pseudorange() {
ui32_t gpstime;
ui8_t gpstime_bytes[4];
ui8_t pseudobytes[4];
unsigned chipbytes;
unsigned chipbytes, deltabytes;
int i, j, k;
ui8_t bytes[4];
ui16_t byte16;
@ -869,10 +869,14 @@ int get_pseudorange() {
// GPS Sat Positionen
if (almanac) calc_satpos_alm(alm, gpstime/1000.0, sat);
//if (ephem) calc_satpos_rnx(eph, gpstime/1000.0, sat);
if (almanac) calc_satpos_alm( alm, gpstime/1000.0, sat);
if (ephem) calc_satpos_rnx2(ephs, gpstime/1000.0, sat);
// GPS Sat Positionen t -= 1s
if (option_vel) {
if (almanac) calc_satpos_alm( alm, gpstime/1000.0-1, sat1s);
if (ephem) calc_satpos_rnx2(ephs, gpstime/1000.0-1, sat1s);
}
k = 0;
for (j = 0; j < 12; j++) {
@ -883,6 +887,12 @@ int get_pseudorange() {
}
memcpy(&chipbytes, pseudobytes, 4);
// delta_pseudochips / 385
for (i = 0; i < 3; i++) {
pseudobytes[i] = frame[posGPS_DATA+8*j+4+i];
}
memcpy(&deltabytes, pseudobytes, 3);
//if ( (prns[j] == 0) && (sat_status[j] & 0x0F) ) prns[j] = 32;
range[prns[j]].tow = gpstime;
range[prns[j]].status = sat_status[j];
@ -898,13 +908,11 @@ int get_pseudorange() {
}}
range[prns[j]].chips = chipbytes;
range[prns[j]].deltachips = deltabytes;
/*
for (i = 0; i < 4; i++) { pseudobytes[i] = frame[posGPS_DATA+8*j+4+i]; }
memcpy(&byteval, pseudobytes, 4);
range[prns[j]].ca = byteval & 0xFFFFFF;
//range[prns[j]].dop = (byteval >> 24) & 0xFF;
if (range[prns[j]].ca == 0x555555) {
range[prns[j]].ca = 0;
if (range[prns[j]].deltachips == 0x555555) {
range[prns[j]].deltachips = 0;
continue;
}
*/
@ -926,6 +934,8 @@ int get_pseudorange() {
for (j = 0; j < 12; j++) { // 0x013FB0A4
sat[prns[j]].pseudorange = /*0x01400000*/ - range[prns[j]].chips * df;
sat1s[prns[j]].pseudorange = -(range[prns[j]].chips - range[prns[j]].deltachips/385.0)*df;
//+ sat[prn[j]].clock_corr - sat1s[prn[j]].clock_corr
}
@ -937,15 +947,38 @@ int get_pseudorange() {
for (j = 0; j < k; j++) sat[prn[j]].PR = sat[prn[j]].pseudorange + sat[prn[j]].clock_corr - pr0 + 20e6;
// es kann PRNs geben, die zeitweise stark abweichende PR liefern;
// eventuell Standardabweichung ermitteln und fehlerhafte Sats weglassen
for (j = 0; j < k; j++) { // sat/sat1s... PR-check
sat1s[prn[j]].PR = sat1s[prn[j]].pseudorange + sat[prn[j]].clock_corr - pr0 + 20e6;
}
return k;
}
int get_GPSvel(double lat, double lon, double vel_ecef[3],
double *vH, double *vD, double *vU) {
// ECEF-Velocities
// ECEF-Vel -> NorthEastUp
double phi = lat*M_PI/180.0;
double lam = lon*M_PI/180.0;
double vN = -vel_ecef[0]*sin(phi)*cos(lam) - vel_ecef[1]*sin(phi)*sin(lam) + vel_ecef[2]*cos(phi);
double vE = -vel_ecef[0]*sin(lam) + vel_ecef[1]*cos(lam);
*vU = vel_ecef[0]*cos(phi)*cos(lam) + vel_ecef[1]*cos(phi)*sin(lam) + vel_ecef[2]*sin(phi);
// NEU -> HorDirVer
*vH = sqrt(vN*vN+vE*vE);
*vD = atan2(vE, vN) * 180 / M_PI;
if (*vD < 0) *vD += 360;
return 0;
}
double DOP[4];
int get_GPSkoord(int N) {
double lat, lon, alt, rx_cl_bias;
double pos_ecef[3];
double vH, vD, vU;
double lat1s, lon1s, alt1s;
double pos_ecef[3],
pos1s_ecef[3], vel_ecef[3];
double gdop, gdop0 = 1000.0;
double hdop, vdop, pdop;
int i0, i1, i2, i3, j;
@ -953,6 +986,7 @@ int get_GPSkoord(int N) {
int num = 0;
SAT_t Sat_A[4];
SAT_t Sat_B[12]; // N <= 12
SAT_t Sat_V[12];
if (option_vergps == 8) {
fprintf(stdout, " sats: ");
@ -1011,23 +1045,29 @@ int get_GPSkoord(int N) {
if (option_vergps == 8 || option_vergps == 2) {
for (j = 0; j < N; j++) Sat_B[j] = sat[prn[j]];
for (j = 0; j < N; j++) Sat_V[j] = sat1s[prn[j]];
if (option_vergps == 8) {
NAV_bancroft1(N, Sat_B, pos_ecef, &rx_cl_bias);
ecef2elli(pos_ecef[0], pos_ecef[1], pos_ecef[2], &lat, &lon, &alt);
fprintf(stdout, "bancroft1[%d] lat: %.6f , lon: %.6f , alt: %.2f ", N, lat, lon, alt);
fprintf(stdout, "\n");
}
NAV_bancroft2(N, Sat_B, pos_ecef, &rx_cl_bias);
NAV_bancroft1(N, Sat_B, pos_ecef, &rx_cl_bias);
ecef2elli(pos_ecef[0], pos_ecef[1], pos_ecef[2], &lat, &lon, &alt);
gdop = -1;
if (calc_DOPn(N, Sat_B, pos_ecef, DOP) == 0) {
gdop = sqrt(DOP[0]+DOP[1]+DOP[2]+DOP[3]);
}
if (option_vel) {
NAV_bancroft1(N, Sat_V, pos1s_ecef, &rx_cl_bias);
for (j = 0; j < 3; j++) vel_ecef[j] = pos_ecef[j] - pos1s_ecef[j];
get_GPSvel(lat, lon, vel_ecef, &vH, &vD, &vU);
ecef2elli(pos1s_ecef[0], pos1s_ecef[1], pos1s_ecef[2], &lat1s, &lon1s, &alt1s);
if (option_vergps == 8) {
fprintf(stdout, "\ndeltachips1s lat: %.6f , lon: %.6f , alt: %.2f ", lat1s, lon1s, alt1s);
fprintf(stdout, " vH: %4.1f D: %5.1f° vV: %3.1f ", vH, vD, vU);
fprintf(stdout, "\n");
}
}
if (option_vergps == 8) {
fprintf(stdout, "bancroft2[%d] lat: %.6f , lon: %.6f , alt: %.2f ", N, lat, lon, alt);
fprintf(stdout, "bancroft[%2d] lat: %.6f , lon: %.6f , alt: %.2f ", N, lat, lon, alt);
fprintf(stdout, " GDOP[");
for (j = 0; j < N; j++) {
fprintf(stdout, "%d", prn[j]);
@ -1043,6 +1083,12 @@ int get_GPSkoord(int N) {
gpx.dop = gdop;
num = N;
}
if (option_vel) {
gpx.vH = vH;
gpx.vD = vD;
gpx.vU = vU;
}
}
return num;
@ -1121,7 +1167,10 @@ int print_position() { // GPS-Hoehe ueber Ellipsoid
fprintf(stdout, " ");
if (almanac) fprintf(stdout, " lat: %.4f lon: %.4f alt: %.1f ", gpx.lat, gpx.lon, gpx.h);
else fprintf(stdout, " lat: %.5f lon: %.5f alt: %.1f ", gpx.lat, gpx.lon, gpx.h);
if (option_vergps) {
if (option_vergps && option_vergps >= 2) {
if (option_vel) {
fprintf(stdout," vH: %4.1f D: %5.1f° vV: %3.1f ", gpx.vH, gpx.vD, gpx.vU);
}
if (option_vergps != 2) {
fprintf(stdout, " GDOP[%02d,%02d,%02d,%02d] %.1f",
gpx.sats[0], gpx.sats[1], gpx.sats[2], gpx.sats[3], gpx.dop);
@ -1224,7 +1273,7 @@ int main(int argc, char *argv[]) {
fprintf(stderr, "%s [options] <file>\n", fpname);
fprintf(stderr, " file: audio.wav or raw_data\n");
fprintf(stderr, " options:\n");
fprintf(stderr, " -v, --verbose\n");
fprintf(stderr, " -v, -vx, -vv\n");
fprintf(stderr, " -r, --raw\n");
fprintf(stderr, " -i, --invert\n");
fprintf(stderr, " -a, --almanac <almanacSEM>\n");
@ -1237,7 +1286,11 @@ int main(int argc, char *argv[]) {
fprintf(stderr, " --rawin1,2 (raw_data file)\n");
return 0;
}
else if ( (strcmp(*argv, "-v") == 0) || (strcmp(*argv, "--verbose") == 0) ) {
else if ( (strcmp(*argv, "-v") == 0) ) {
option_vel = 1;
if (option_vergps < 1) option_vergps = 2;
}
else if ( (strcmp(*argv, "-vx") == 0) ) {
option_verbose = 1;
}
else if ( (strcmp(*argv, "-vv") == 0) ) {

Wyświetl plik

@ -62,6 +62,7 @@ typedef struct {
int wday;
int std; int min; float sek;
double lat; double lon; double h;
double vH; double vD; double vU;
int sats[4];
double dop;
unsigned short aux[4];
@ -78,6 +79,7 @@ int option_verbose = 0, // ausfuehrliche Anzeige
option_b = 0,
fileloaded = 0,
option_vergps = 0,
option_vel = 0, // velocity
rawin = 0;
double dop_limit = 9.9;
@ -565,22 +567,23 @@ int get_Cal() {
calfr = byte;
if (option_verbose == 2) {
fprintf(stderr, "[%5d] ", gpx.frnr);
fprintf(stderr, " 0x%02x:", calfr);
fprintf(stdout, "\n");
fprintf(stdout, "[%5d] ", gpx.frnr);
fprintf(stdout, " 0x%02x:", calfr);
}
for (i = 0; i < 16; i++) {
byte = framebyte(pos_CalData+1+i);
if (option_verbose == 2) {
fprintf(stderr, " %02x", byte);
fprintf(stdout, " %02x", byte);
}
}
if (option_verbose) {
get_Aux();
if (option_verbose == 2) {
fprintf(stderr, " # ");
fprintf(stdout, " # ");
for (i = 0; i < 8; i++) {
byte = framebyte(pos_AuxData+i);
fprintf(stderr, "%02x ", byte);
fprintf(stdout, "%02x ", byte);
}
}
else {
@ -601,10 +604,6 @@ int get_Cal() {
fprintf(stdout, " : freq %d kHz", freq);
}
if (option_verbose == 2) {
fprintf(stderr, "\n");
}
return 0;
}
@ -618,7 +617,8 @@ EPHEM_t alm[33];
//EPHEM_t eph[33][24];
EPHEM_t *ephs = NULL;
SAT_t sat[33];
SAT_t sat[33],
sat1s[33];
ui8_t prn_le[12*5+4];
@ -796,7 +796,7 @@ typedef struct {
ui32_t tow;
ui8_t status;
int chips;
int ca;
int deltachips;
} RANGE_t;
RANGE_t range[33];
@ -810,7 +810,7 @@ int get_pseudorange() {
ui32_t gpstime;
ui8_t gpstime_bytes[4];
ui8_t pseudobytes[4];
unsigned chipbytes;
unsigned chipbytes, deltabytes;
int i, j, k;
ui8_t bytes[4];
ui16_t byte16;
@ -839,10 +839,14 @@ int get_pseudorange() {
// GPS Sat Positionen
if (almanac) calc_satpos_alm(alm, gpstime/1000.0, sat);
//if (ephem) calc_satpos_rnx(eph, gpstime/1000.0, sat);
if (almanac) calc_satpos_alm( alm, gpstime/1000.0, sat);
if (ephem) calc_satpos_rnx2(ephs, gpstime/1000.0, sat);
// GPS Sat Positionen t -= 1s
if (option_vel) {
if (almanac) calc_satpos_alm( alm, gpstime/1000.0-1, sat1s);
if (ephem) calc_satpos_rnx2(ephs, gpstime/1000.0-1, sat1s);
}
k = 0;
for (j = 0; j < 12; j++) {
@ -853,6 +857,12 @@ int get_pseudorange() {
}
memcpy(&chipbytes, pseudobytes, 4);
// delta_pseudochips / 385
for (i = 0; i < 3; i++) {
pseudobytes[i] = frame[posGPS_DATA+8*j+4+i];
}
memcpy(&deltabytes, pseudobytes, 3);
//if ( (prns[j] == 0) && (sat_status[j] & 0x0F) ) prns[j] = 32;
range[prns[j]].tow = gpstime;
range[prns[j]].status = sat_status[j];
@ -868,13 +878,11 @@ int get_pseudorange() {
}}
range[prns[j]].chips = chipbytes;
range[prns[j]].deltachips = deltabytes;
/*
for (i = 0; i < 4; i++) { pseudobytes[i] = frame[posGPS_DATA+8*j+4+i]; }
memcpy(&byteval, pseudobytes, 4);
range[prns[j]].ca = byteval & 0xFFFFFF;
//range[prns[j]].dop = (byteval >> 24) & 0xFF;
if (range[prns[j]].ca == 0x555555) {
range[prns[j]].ca = 0;
if (range[prns[j]].deltachips == 0x555555) {
range[prns[j]].deltachips = 0;
continue;
}
*/
@ -896,6 +904,8 @@ int get_pseudorange() {
for (j = 0; j < 12; j++) { // 0x013FB0A4
sat[prns[j]].pseudorange = /*0x01400000*/ - range[prns[j]].chips * df;
sat1s[prns[j]].pseudorange = -(range[prns[j]].chips - range[prns[j]].deltachips/385.0)*df;
//+ sat[prn[j]].clock_corr - sat1s[prn[j]].clock_corr
}
@ -907,15 +917,38 @@ int get_pseudorange() {
for (j = 0; j < k; j++) sat[prn[j]].PR = sat[prn[j]].pseudorange + sat[prn[j]].clock_corr - pr0 + 20e6;
// es kann PRNs geben, die zeitweise stark abweichende PR liefern;
// eventuell Standardabweichung ermitteln und fehlerhafte Sats weglassen
for (j = 0; j < k; j++) { // sat/sat1s... PR-check
sat1s[prn[j]].PR = sat1s[prn[j]].pseudorange + sat[prn[j]].clock_corr - pr0 + 20e6;
}
return k;
}
int get_GPSvel(double lat, double lon, double vel_ecef[3],
double *vH, double *vD, double *vU) {
// ECEF-Velocities
// ECEF-Vel -> NorthEastUp
double phi = lat*M_PI/180.0;
double lam = lon*M_PI/180.0;
double vN = -vel_ecef[0]*sin(phi)*cos(lam) - vel_ecef[1]*sin(phi)*sin(lam) + vel_ecef[2]*cos(phi);
double vE = -vel_ecef[0]*sin(lam) + vel_ecef[1]*cos(lam);
*vU = vel_ecef[0]*cos(phi)*cos(lam) + vel_ecef[1]*cos(phi)*sin(lam) + vel_ecef[2]*sin(phi);
// NEU -> HorDirVer
*vH = sqrt(vN*vN+vE*vE);
*vD = atan2(vE, vN) * 180 / M_PI;
if (*vD < 0) *vD += 360;
return 0;
}
double DOP[4];
int get_GPSkoord(int N) {
double lat, lon, alt, rx_cl_bias;
double pos_ecef[3];
double vH, vD, vU;
double lat1s, lon1s, alt1s;
double pos_ecef[3],
pos1s_ecef[3], vel_ecef[3];
double gdop, gdop0 = 1000.0;
double hdop, vdop, pdop;
int i0, i1, i2, i3, j;
@ -923,6 +956,7 @@ int get_GPSkoord(int N) {
int num = 0;
SAT_t Sat_A[4];
SAT_t Sat_B[12]; // N <= 12
SAT_t Sat_V[12];
if (option_vergps == 8) {
fprintf(stdout, " sats: ");
@ -981,23 +1015,29 @@ int get_GPSkoord(int N) {
if (option_vergps == 8 || option_vergps == 2) {
for (j = 0; j < N; j++) Sat_B[j] = sat[prn[j]];
for (j = 0; j < N; j++) Sat_V[j] = sat1s[prn[j]];
if (option_vergps == 8) {
NAV_bancroft1(N, Sat_B, pos_ecef, &rx_cl_bias);
ecef2elli(pos_ecef[0], pos_ecef[1], pos_ecef[2], &lat, &lon, &alt);
fprintf(stdout, "bancroft1[%d] lat: %.6f , lon: %.6f , alt: %.2f ", N, lat, lon, alt);
fprintf(stdout, "\n");
}
NAV_bancroft2(N, Sat_B, pos_ecef, &rx_cl_bias);
NAV_bancroft1(N, Sat_B, pos_ecef, &rx_cl_bias);
ecef2elli(pos_ecef[0], pos_ecef[1], pos_ecef[2], &lat, &lon, &alt);
gdop = -1;
if (calc_DOPn(N, Sat_B, pos_ecef, DOP) == 0) {
gdop = sqrt(DOP[0]+DOP[1]+DOP[2]+DOP[3]);
}
if (option_vel) {
NAV_bancroft1(N, Sat_V, pos1s_ecef, &rx_cl_bias);
for (j = 0; j < 3; j++) vel_ecef[j] = pos_ecef[j] - pos1s_ecef[j];
get_GPSvel(lat, lon, vel_ecef, &vH, &vD, &vU);
ecef2elli(pos1s_ecef[0], pos1s_ecef[1], pos1s_ecef[2], &lat1s, &lon1s, &alt1s);
if (option_vergps == 8) {
fprintf(stdout, "\ndeltachips1s lat: %.6f , lon: %.6f , alt: %.2f ", lat1s, lon1s, alt1s);
fprintf(stdout, " vH: %4.1f D: %5.1f° vV: %3.1f ", vH, vD, vU);
fprintf(stdout, "\n");
}
}
if (option_vergps == 8) {
fprintf(stdout, "bancroft2[%d] lat: %.6f , lon: %.6f , alt: %.2f ", N, lat, lon, alt);
fprintf(stdout, "bancroft[%2d] lat: %.6f , lon: %.6f , alt: %.2f ", N, lat, lon, alt);
fprintf(stdout, " GDOP[");
for (j = 0; j < N; j++) {
fprintf(stdout, "%d", prn[j]);
@ -1013,6 +1053,12 @@ int get_GPSkoord(int N) {
gpx.dop = gdop;
num = N;
}
if (option_vel) {
gpx.vH = vH;
gpx.vD = vD;
gpx.vU = vU;
}
}
return num;
@ -1057,7 +1103,10 @@ int print_position() { // GPS-Hoehe ueber Ellipsoid
fprintf(stdout, " ");
if (almanac) fprintf(stdout, " lat: %.4f lon: %.4f alt: %.1f ", gpx.lat, gpx.lon, gpx.h);
else fprintf(stdout, " lat: %.5f lon: %.5f alt: %.1f ", gpx.lat, gpx.lon, gpx.h);
if (option_vergps) {
if (option_vergps && option_vergps >= 2) {
if (option_vel) {
fprintf(stdout," vH: %4.1f D: %5.1f° vV: %3.1f ", gpx.vH, gpx.vD, gpx.vU);
}
if (option_vergps != 2) {
fprintf(stdout, " GDOP[%02d,%02d,%02d,%02d] %.1f",
gpx.sats[0], gpx.sats[1], gpx.sats[2], gpx.sats[3], gpx.dop);
@ -1143,7 +1192,7 @@ int main(int argc, char *argv[]) {
fprintf(stderr, "%s [options] <file>\n", fpname);
fprintf(stderr, " file: audio.wav or raw_data\n");
fprintf(stderr, " options:\n");
fprintf(stderr, " -v, --verbose\n");
fprintf(stderr, " -v, -vx, -vv\n");
fprintf(stderr, " -r, --raw\n");
fprintf(stderr, " -i, --invert\n");
fprintf(stderr, " -a, --almanac <almanacSEM>\n");
@ -1155,7 +1204,11 @@ int main(int argc, char *argv[]) {
fprintf(stderr, " --rawin1,2 (raw_data file)\n");
return 0;
}
else if ( (strcmp(*argv, "-v") == 0) || (strcmp(*argv, "--verbose") == 0) ) {
else if ( (strcmp(*argv, "-v") == 0) ) {
option_vel = 1;
if (option_vergps < 1) option_vergps = 2;
}
else if ( (strcmp(*argv, "-vx") == 0) ) {
option_verbose = 1;
}
else if ( (strcmp(*argv, "-vv") == 0) ) {