kopia lustrzana https://github.com/rs1729/RS
rs_module: rs92-prn32
rodzic
3e5bb9646b
commit
4e89733d06
|
@ -56,11 +56,7 @@ int print_position(rs_data_t *rs_data) {
|
|||
void print_frame(rs_data_t *rs_data) {
|
||||
int i;
|
||||
|
||||
for (i = rs_data->pos; i < rs_data->frame_len; i++) {
|
||||
rs_data->frame_bytes[i] = 0;
|
||||
}
|
||||
|
||||
if (option_verbose) fprintf(stdout, "\n"); // fflush(stdout);
|
||||
if (!option_raw && option_verbose) fprintf(stdout, "\n"); // fflush(stdout);
|
||||
|
||||
(rs_data->rs_process)(rs_data, option_raw, option_verbose);
|
||||
|
||||
|
@ -69,8 +65,8 @@ void print_frame(rs_data_t *rs_data) {
|
|||
fprintf(stdout, "%02x", rs_data->frame_bytes[i]);
|
||||
}
|
||||
|
||||
if (rs_data->ecc >= 0) fprintf(stdout, " [OK]"); else fprintf(stdout, " [NO]");
|
||||
if (rs_data->ecc > 0) fprintf(stdout, " (%d)", rs_data->ecc);
|
||||
if (rs_data->ecc >= 0) fprintf(stdout, " [OK]"); else fprintf(stdout, " [NO]");
|
||||
if (rs_data->ecc > 0) fprintf(stdout, " (%d)", rs_data->ecc);
|
||||
|
||||
fprintf(stdout, "\n");
|
||||
}
|
||||
|
|
|
@ -59,11 +59,7 @@ if ( option_crc==0 || ( option_crc && (rs_data->crc & 0x7)==0 ) )
|
|||
void print_frame(rs_data_t *rs_data) {
|
||||
int i;
|
||||
|
||||
for (i = rs_data->pos; i < rs_data->frame_len; i++) {
|
||||
rs_data->frame_bytes[i] = 0;
|
||||
}
|
||||
|
||||
if (option_verbose) fprintf(stdout, "\n"); // fflush(stdout);
|
||||
if (!option_raw && option_verbose) fprintf(stdout, "\n"); // fflush(stdout);
|
||||
|
||||
(rs_data->rs_process)(rs_data, option_raw, option_verbose);
|
||||
|
||||
|
@ -72,8 +68,8 @@ void print_frame(rs_data_t *rs_data) {
|
|||
fprintf(stdout, "%02x", rs_data->frame_bytes[i]);
|
||||
}
|
||||
|
||||
if (rs_data->ecc >= 0) fprintf(stdout, " [OK]"); else fprintf(stdout, " [NO]");
|
||||
if (rs_data->ecc > 0) fprintf(stdout, " (%d)", rs_data->ecc);
|
||||
if (rs_data->ecc >= 0) fprintf(stdout, " [OK]"); else fprintf(stdout, " [NO]");
|
||||
if (rs_data->ecc > 0) fprintf(stdout, " (%d)", rs_data->ecc);
|
||||
|
||||
fprintf(stdout, "\n");
|
||||
}
|
||||
|
|
|
@ -334,7 +334,7 @@ static int rs41_get_Cal(rs_data_t *rs_data, int verbose) {
|
|||
crc = rs41_check_CRC(rs_data, pos_FRAME, pck_FRAME);
|
||||
|
||||
if (crc==0 && strncmp(rs41_cal->SN, rs_data->SN, 8)!=0) {
|
||||
memset(rs41_cal, 0, sizeof(rs41_cal));
|
||||
memset(rs41_cal, 0, sizeof(*rs41_cal));
|
||||
strncpy(rs41_cal->SN, rs_data->SN, 9);
|
||||
}
|
||||
|
||||
|
@ -751,13 +751,11 @@ static int rs41_framebits2bytes(rs_data_t *rs_data) {
|
|||
|
||||
char *rawframebits = rs_data->frame_rawbits;
|
||||
ui8_t *frame = rs_data->frame_bytes;
|
||||
ui32_t n;
|
||||
|
||||
ui32_t endpos = rs_data->pos;
|
||||
|
||||
for (rs_data->pos = 0; rs_data->pos < endpos; rs_data->pos++) {
|
||||
frame[rs_data->pos] = rs_data->bits2byte(rs_data, rawframebits+(BITS*rs_data->pos));
|
||||
for (n = 0; n < rs_data->pos; n++) {
|
||||
frame[n] = rs_data->bits2byte(rs_data, rawframebits+(BITS*n));
|
||||
}
|
||||
while (endpos < FRAME_LEN) frame[endpos++] = 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -766,11 +764,16 @@ static int rs41_framebits2bytes(rs_data_t *rs_data) {
|
|||
int rs41_process(void *data, int raw, int options) {
|
||||
rs_data_t *rs_data = data;
|
||||
int err=0, ret=0;
|
||||
ui32_t n;
|
||||
|
||||
if (rs_data->input < 8) {
|
||||
rs41_framebits2bytes(rs_data);
|
||||
}
|
||||
|
||||
for (n = rs_data->pos; n < rs_data->frame_len; n++) {
|
||||
rs_data->frame_bytes[n] = 0;
|
||||
}
|
||||
|
||||
rs_data->ecc = rs41_ecc(rs_data);
|
||||
rs_data->crc = 0;
|
||||
|
||||
|
|
|
@ -225,7 +225,7 @@ static int rs92_get_Cal(rs_data_t *rs_data, int verbose) {
|
|||
// crc == rs_data->crc & crc_CFG ?
|
||||
|
||||
if (crc==0 && strncmp(rs92_cal->SN, rs_data->SN, 8)!=0) {
|
||||
memset(rs92_cal, 0, sizeof(rs92_cal));
|
||||
memset(rs92_cal, 0, sizeof(*rs92_cal));
|
||||
strncpy(rs92_cal->SN, rs_data->SN, 9);
|
||||
}
|
||||
|
||||
|
@ -351,7 +351,7 @@ static void rs92_prn12(ui8_t *prn_le, ui8_t prns[12]) {
|
|||
// PRN-32 overflow
|
||||
if (ind_prn32 % 3 != 2) { // -> ind_prn32<11 // vorausgesetzt im Block folgt auf PRN-32
|
||||
if ((sat_status[ind_prn32+1] & 0x0F) && prns[ind_prn32+1] > 1) { // entweder PRN-1 oder PRN-gerade
|
||||
// && prns[ind_prn32+1] != 3 ?
|
||||
// && prns[ind_prn32+1] != 3 ?
|
||||
for (j = 0; j < ind_prn32; j++) {
|
||||
if (prns[j] == (prns[ind_prn32+1]^prn32toggle) && (sat_status[j] & 0x0F)) break;
|
||||
}
|
||||
|
@ -374,8 +374,8 @@ static void rs92_prn12(ui8_t *prn_le, ui8_t prns[12]) {
|
|||
if (prns[ind_prn32+1] == 0) { prn32toggle ^= 0x1; }
|
||||
*/
|
||||
}
|
||||
prn32next = prns[ind_prn32+1]; // -> ind_prn32<11 && ind_prn32 % 3 != 2
|
||||
}
|
||||
if (ind_prn32 < 11) prn32next = prns[ind_prn32+1];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -525,7 +525,7 @@ static int rs92_get_GPSkoord(rs_data_t *rs_data, int opt_gg2) {
|
|||
|
||||
|
||||
// Sat mit schlechten Daten suchen
|
||||
if (diter > d_err)
|
||||
if (diter >= d_err)
|
||||
{
|
||||
if (N > 4) { // N > 5
|
||||
for (n = 0; n < N; n++) {
|
||||
|
@ -552,8 +552,8 @@ static int rs92_get_GPSkoord(rs_data_t *rs_data, int opt_gg2) {
|
|||
|
||||
if (exN >= 0) {
|
||||
|
||||
if ( (Sat_B[exN].prn == prn32next) && (ind_prn32 % 3 != 2) ) {
|
||||
prn32toggle ^= 0x1; // wenn zuvor mit prn32next valider Fix, dann eventuell nicht aendern;q
|
||||
if (Sat_B[exN].prn == prn32next) {
|
||||
prn32toggle ^= 0x1; // wenn zuvor mit prn32next valider Fix, dann eventuell nicht aendern;
|
||||
// eventuell gleich testen
|
||||
}
|
||||
|
||||
|
@ -637,15 +637,6 @@ static int rs92_get_GPSkoord(rs_data_t *rs_data, int opt_gg2) {
|
|||
}
|
||||
|
||||
|
||||
(rs_data->GPS).lat = lat;
|
||||
(rs_data->GPS).lon = lon;
|
||||
(rs_data->GPS).alt = alt;
|
||||
|
||||
(rs_data->GPS).vH = vH;
|
||||
(rs_data->GPS).vD = vD;
|
||||
(rs_data->GPS).vU = vU;
|
||||
|
||||
|
||||
addData_Vaisala_t *rs92_add = rs_data->addData;
|
||||
int pDOP = -1;
|
||||
if (calc_DOPn(N, Sat_B, pos_ecef, DOP) == 0) {
|
||||
|
@ -660,6 +651,24 @@ static int rs92_get_GPSkoord(rs_data_t *rs_data, int opt_gg2) {
|
|||
}
|
||||
|
||||
|
||||
if (diter < d_err) {
|
||||
|
||||
(rs_data->GPS).lat = lat;
|
||||
(rs_data->GPS).lon = lon;
|
||||
(rs_data->GPS).alt = alt;
|
||||
|
||||
(rs_data->GPS).vH = vH;
|
||||
(rs_data->GPS).vD = vD;
|
||||
(rs_data->GPS).vU = vU;
|
||||
|
||||
}
|
||||
else {
|
||||
(rs_data->GPS).lat = (rs_data->GPS).lon = (rs_data->GPS).alt = 0;
|
||||
(rs_data->GPS).vH = (rs_data->GPS).vD = (rs_data->GPS).vU = 0;
|
||||
N = 0;
|
||||
}
|
||||
|
||||
|
||||
return N;
|
||||
}
|
||||
|
||||
|
@ -771,7 +780,9 @@ static int rs92_ecc(rs_data_t *rs_data) {
|
|||
int msgpos = cfg_rs92ecc.msgpos; // = 6
|
||||
int parpos = cfg_rs92ecc.parpos; // = 240-24
|
||||
|
||||
while (frmlen < rs_data->frame_len) frame[frmlen++] = 0;
|
||||
while (frmlen < parpos) frmlen++;
|
||||
while (frmlen < rs_data->frame_len) frame[frmlen++] = 0xFF; // besser bei 00-error-frames
|
||||
|
||||
if (frmlen > rs_data->frame_len) frmlen = rs_data->frame_len;
|
||||
|
||||
memset(cw, 0, rs_N);
|
||||
|
@ -814,13 +825,11 @@ static int rs92_framebits2bytes(rs_data_t *rs_data) {
|
|||
|
||||
char *rawframebits = rs_data->frame_rawbits;
|
||||
ui8_t *frame = rs_data->frame_bytes;
|
||||
ui32_t n;
|
||||
|
||||
ui32_t endpos = rs_data->pos;
|
||||
|
||||
for (rs_data->pos = 0; rs_data->pos < endpos; rs_data->pos++) {
|
||||
frame[rs_data->pos] = rs_data->bits2byte(rs_data, rawframebits+(BITS*rs_data->pos));
|
||||
for (n = 0; n < rs_data->pos; n++) {
|
||||
frame[n] = rs_data->bits2byte(rs_data, rawframebits+(BITS*n));
|
||||
}
|
||||
while (endpos < FRAME_LEN) frame[endpos++] = 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -829,11 +838,16 @@ static int rs92_framebits2bytes(rs_data_t *rs_data) {
|
|||
int rs92_process(void *data, int raw, int options) {
|
||||
rs_data_t *rs_data = data;
|
||||
int err=0, ret=0;
|
||||
ui32_t n;
|
||||
|
||||
if (rs_data->input < 8) {
|
||||
rs92_framebits2bytes(rs_data);
|
||||
}
|
||||
|
||||
for (n = rs_data->pos; n < rs_data->frame_len; n++) {
|
||||
rs_data->frame_bytes[n] = 0;
|
||||
}
|
||||
|
||||
rs_data->ecc = rs92_ecc(rs_data);
|
||||
rs_data->crc = 0;
|
||||
|
||||
|
@ -874,8 +888,8 @@ int rs92_mbits2byte(void *data, char mbits[]) {
|
|||
int i, byte=0, d=1;
|
||||
int bit8[8];
|
||||
|
||||
if (manch(mbits+0) != 0) return 0x100;
|
||||
for (i = 0; i < 8; i++) {
|
||||
if (manch(mbits+0) != 0) return 0x100; // hier error-00-frames mit pos==frame_len moeglich;
|
||||
for (i = 0; i < 8; i++) { // eventuell hier reync, oder in demod
|
||||
bit8[i] = manch(mbits+2*(i+1));
|
||||
}
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue