From bf7651328e0625c20269fae951981918a2779e8e Mon Sep 17 00:00:00 2001 From: Zilog80 Date: Sat, 24 Sep 2016 20:36:07 +0200 Subject: [PATCH] iMet-1-RS: Bell202 DFT --- imet/imet1rs_dft.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/imet/imet1rs_dft.c b/imet/imet1rs_dft.c index a7095fc..2533e85 100644 --- a/imet/imet1rs_dft.c +++ b/imet/imet1rs_dft.c @@ -269,6 +269,9 @@ int compare() { int bits2byte(ui8_t *bits) { int i, d = 1, byte = 0; + if ( bits[0]+bits[1]+bits[2]+bits[3]+bits[4] // 1 11111111 1 (sync) + +bits[5]+bits[6]+bits[7]+bits[8]+bits[9] == 10 ) return 0xFFFF; + for (i = 1; i < BITS-1; i++) { // little endian if (bits[i] == 1) byte += d; else if (bits[i] == 0) byte += 0; @@ -280,10 +283,13 @@ int bits2byte(ui8_t *bits) { int bits2bytes(ui8_t *bits, ui8_t *bytes, int len) { int i; + int byte; for (i = 0; i < len; i++) { - bytes[i] = bits2byte(bits+BITS*i); + byte = bits2byte(bits+BITS*i); + bytes[i] = byte & 0xFF; + if (byte == 0xFFFF) break; } - return 0; + return i; } void print_rawbits(int len) { @@ -425,6 +431,7 @@ void print_ePTU(int pos) { int print_frame(int len) { int i; + int framelen; if ( len < 2 || len > LEN_BYTEFRAME) return -1; for (i = len; i < LEN_BYTEFRAME; i++) byteframe[i] = 0; @@ -435,10 +442,10 @@ int print_frame(int len) { } else { - bits2bytes(bitframe, byteframe, len); + framelen = bits2bytes(bitframe, byteframe, len); if (option_raw) { - for (i = 0; i < LEN_GPSePTU; i++) { + for (i = 0; i < framelen; i++) { // LEN_GPSePTU fprintf(stdout, "%02X ", byteframe[i]); } fprintf(stdout, "\n"); @@ -587,7 +594,7 @@ int main(int argc, char *argv[]) { else { bitframe[bitpos] = bit0; bitpos++; - if (bitpos >= LEN_GPSePTU*BITS+40) { + if (bitpos >= LEN_BITFRAME-200) { // LEN_GPSePTU*BITS+40 print_frame(bitpos/BITS);