kopia lustrzana https://github.com/rs1729/RS
RS41: Reed-Solomon ECC
rodzic
a7bb088c04
commit
1e7f76c790
|
@ -84,7 +84,7 @@ int option_verbose = 0, // ausfuehrliche Anzeige
|
||||||
#define HEADLEN 32 // HEADOFS+HEADLEN mod 8 = 0
|
#define HEADLEN 32 // HEADOFS+HEADLEN mod 8 = 0
|
||||||
#define FRAMESTART ((HEADOFS+HEADLEN)/8)
|
#define FRAMESTART ((HEADOFS+HEADLEN)/8)
|
||||||
|
|
||||||
/* 10 B6 CA 11 22 96 12 F8 */
|
/* 10 B6 CA 11 22 96 12 F8 */
|
||||||
char header[] = "0000100001101101010100111000100001000100011010010100100000011111";
|
char header[] = "0000100001101101010100111000100001000100011010010100100000011111";
|
||||||
char buf[HEADLEN+1] = "x";
|
char buf[HEADLEN+1] = "x";
|
||||||
int bufpos = -1;
|
int bufpos = -1;
|
||||||
|
@ -97,7 +97,7 @@ ui8_t //xframe[FRAME_LEN] = { 0x10, 0xB6, 0xCA, 0x11, 0x22, 0x96, 0x12, 0xF8},
|
||||||
|
|
||||||
|
|
||||||
#define MASK_LEN 64
|
#define MASK_LEN 64
|
||||||
ui8_t mask[MASK_LEN] = { 0x96, 0x83, 0x3E, 0x51, 0xB1, 0x49, 0x08, 0x98,
|
ui8_t mask[MASK_LEN] = { 0x96, 0x83, 0x3E, 0x51, 0xB1, 0x49, 0x08, 0x98,
|
||||||
0x32, 0x05, 0x59, 0x0E, 0xF9, 0x44, 0xC6, 0x26,
|
0x32, 0x05, 0x59, 0x0E, 0xF9, 0x44, 0xC6, 0x26,
|
||||||
0x21, 0x60, 0xC2, 0xEA, 0x79, 0x5D, 0x6D, 0xA1,
|
0x21, 0x60, 0xC2, 0xEA, 0x79, 0x5D, 0x6D, 0xA1,
|
||||||
0x54, 0x69, 0x47, 0x0C, 0xDC, 0xE8, 0x5C, 0xF1,
|
0x54, 0x69, 0x47, 0x0C, 0xDC, 0xE8, 0x5C, 0xF1,
|
||||||
|
@ -201,7 +201,7 @@ int read_signed_sample(FILE *fp) { // int = i32_t
|
||||||
byte = fgetc(fp);
|
byte = fgetc(fp);
|
||||||
if (byte == EOF) return EOF_INT;
|
if (byte == EOF) return EOF_INT;
|
||||||
if (i == 0) sample = byte;
|
if (i == 0) sample = byte;
|
||||||
|
|
||||||
if (bits_sample == 16) {
|
if (bits_sample == 16) {
|
||||||
byte = fgetc(fp);
|
byte = fgetc(fp);
|
||||||
if (byte == EOF) return EOF_INT;
|
if (byte == EOF) return EOF_INT;
|
||||||
|
@ -298,7 +298,6 @@ int read_rawbit(FILE *fp, int *bit) {
|
||||||
|
|
||||||
if (option_inv) *bit ^= 1;
|
if (option_inv) *bit ^= 1;
|
||||||
|
|
||||||
|
|
||||||
return pars;
|
return pars;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -313,7 +312,7 @@ int bits2byte(char bits[]) {
|
||||||
if (bits[i] == 1) byteval += d;
|
if (bits[i] == 1) byteval += d;
|
||||||
else if (bits[i] == 0) byteval += 0;
|
else if (bits[i] == 0) byteval += 0;
|
||||||
else return 0x100;
|
else return 0x100;
|
||||||
d <<= 1;
|
d <<= 1;
|
||||||
}
|
}
|
||||||
return byteval;
|
return byteval;
|
||||||
}
|
}
|
||||||
|
@ -375,9 +374,9 @@ void Gps2Date(long GpsWeek, long GpsSeconds, int *Year, int *Month, int *Day) {
|
||||||
Pos: SubHeader, 1+1 byte (ID+LEN)
|
Pos: SubHeader, 1+1 byte (ID+LEN)
|
||||||
0x039: 7928 FrameNumber+SondeID
|
0x039: 7928 FrameNumber+SondeID
|
||||||
+(0x050: 0732 CalFrames 0x00..0x32)
|
+(0x050: 0732 CalFrames 0x00..0x32)
|
||||||
0x065: 7A2A
|
0x065: 7A2A
|
||||||
0x093: 7C1E GPS Week + TOW
|
0x093: 7C1E GPS Week + TOW
|
||||||
0x0B5: 7D59
|
0x0B5: 7D59
|
||||||
0x112: 7B15 ECEF (X,Y,Z) Coordinates
|
0x112: 7B15 ECEF (X,Y,Z) Coordinates
|
||||||
0x12B: 7611 00
|
0x12B: 7611 00
|
||||||
0x12B: 7Exx AUX-xdata
|
0x12B: 7Exx AUX-xdata
|
||||||
|
@ -580,13 +579,13 @@ void ecef2elli(double X[], double *lat, double *lon, double *h) {
|
||||||
|
|
||||||
p = sqrt( X[0]*X[0] + X[1]*X[1] );
|
p = sqrt( X[0]*X[0] + X[1]*X[1] );
|
||||||
t = atan2( X[2]*a , p*b );
|
t = atan2( X[2]*a , p*b );
|
||||||
|
|
||||||
phi = atan2( X[2] + ee2 * b * sin(t)*sin(t)*sin(t) ,
|
phi = atan2( X[2] + ee2 * b * sin(t)*sin(t)*sin(t) ,
|
||||||
p - e2 * a * cos(t)*cos(t)*cos(t) );
|
p - e2 * a * cos(t)*cos(t)*cos(t) );
|
||||||
|
|
||||||
R = a / sqrt( 1 - e2*sin(phi)*sin(phi) );
|
R = a / sqrt( 1 - e2*sin(phi)*sin(phi) );
|
||||||
*h = p / cos(phi) - R;
|
*h = p / cos(phi) - R;
|
||||||
|
|
||||||
*lat = phi*180/M_PI;
|
*lat = phi*180/M_PI;
|
||||||
*lon = lam*180/M_PI;
|
*lon = lam*180/M_PI;
|
||||||
}
|
}
|
||||||
|
@ -824,7 +823,7 @@ int print_position() {
|
||||||
fprintf(stdout, "[%5d] ", gpx.frnr);
|
fprintf(stdout, "[%5d] ", gpx.frnr);
|
||||||
fprintf(stdout, "(%s) ", gpx.id);
|
fprintf(stdout, "(%s) ", gpx.id);
|
||||||
fprintf(stdout, "%s ", weekday[gpx.wday]);
|
fprintf(stdout, "%s ", weekday[gpx.wday]);
|
||||||
fprintf(stdout, "%04d-%02d-%02d %02d:%02d:%02d",
|
fprintf(stdout, "%04d-%02d-%02d %02d:%02d:%02d",
|
||||||
gpx.jahr, gpx.monat, gpx.tag, gpx.std, gpx.min, gpx.sek);
|
gpx.jahr, gpx.monat, gpx.tag, gpx.std, gpx.min, gpx.sek);
|
||||||
if (option_verbose == 3) fprintf(stdout, " (W %d)", gpx.week);
|
if (option_verbose == 3) fprintf(stdout, " (W %d)", gpx.week);
|
||||||
fprintf(stdout, " ");
|
fprintf(stdout, " ");
|
||||||
|
@ -977,7 +976,7 @@ int main(int argc, char *argv[]) {
|
||||||
else {
|
else {
|
||||||
bitbuf[bit_count] = bit;
|
bitbuf[bit_count] = bit;
|
||||||
bit_count++;
|
bit_count++;
|
||||||
|
|
||||||
if (bit_count == 8) {
|
if (bit_count == 8) {
|
||||||
bit_count = 0;
|
bit_count = 0;
|
||||||
byte = bits2byte(bitbuf);
|
byte = bits2byte(bitbuf);
|
||||||
|
|
Ładowanie…
Reference in New Issue