From: drowe67 Date: Thu, 20 Oct 2016 05:21:15 +0000 (+0000) Subject: added iter display with -v X-Git-Url: http://git.whiteaudio.com/gitweb/?a=commitdiff_plain;h=1fd54820ff5821ead56d0256943f753158f913a2;p=freetel-svn-tracking.git added iter display with -v git-svn-id: https://svn.code.sf.net/p/freetel/code@2893 01035d8c-6547-0410-b346-abe4f91aad63 --- diff --git a/codec2-dev/src/drs232_ldpc.c b/codec2-dev/src/drs232_ldpc.c index 0ea06610..40bb7061 100755 --- a/codec2-dev/src/drs232_ldpc.c +++ b/codec2-dev/src/drs232_ldpc.c @@ -114,7 +114,7 @@ int main(int argc, char *argv[]) { uint8_t packet[BYTES_PER_PACKET+CRC_BYTES]; uint8_t abyte; uint16_t tx_checksum, rx_checksum, packet_errors, packets; - int CodeLength; + int CodeLength, iter; struct LDPC ldpc; assert(sizeof(uw) == UW_BITS); @@ -227,7 +227,7 @@ int main(int argc, char *argv[]) { /* now LDPC decode */ sd_to_llr(llr, symbol_buf_no_rs232, CodeLength); - run_ldpc_decoder(&ldpc, unpacked_packet, llr); + iter = run_ldpc_decoder(&ldpc, unpacked_packet, llr); /* pack into bytes */ @@ -258,9 +258,9 @@ int main(int argc, char *argv[]) { packet_errors++; if (verbose) { - fprintf(stderr, "packets: %d packet_errors: %d PER: %4.3f\n", + fprintf(stderr, "packets: %d packet_errors: %d PER: %4.3f iter: %d\n", packets, packet_errors, - (float)packet_errors/packets); + (float)packet_errors/packets, iter); } //exit(0); next_state = LOOK_FOR_UW; diff --git a/codec2-dev/src/mpdecode_core.c b/codec2-dev/src/mpdecode_core.c index 815c6085..a42f03bb 100644 --- a/codec2-dev/src/mpdecode_core.c +++ b/codec2-dev/src/mpdecode_core.c @@ -12,7 +12,7 @@ #include #include "mpdecode_core.h" -void extract_output(char out_char[], int DecodedBits[], int ParityCheckCount[], +int extract_output(char out_char[], int DecodedBits[], int ParityCheckCount[], int max_iter, int CodeLength, int NumberParityBits); /* Phi function */ @@ -562,7 +562,7 @@ void SumProduct( int BitErrors[], /* Convenience function to call LDPC decoder from C programs */ -void run_ldpc_decoder(struct LDPC *ldpc, char out_char[], double input[]) { +int run_ldpc_decoder(struct LDPC *ldpc, char out_char[], double input[]) { int max_iter, dec_type; float q_scale_factor, r_scale_factor; int max_row_weight, max_col_weight; @@ -633,7 +633,7 @@ void run_ldpc_decoder(struct LDPC *ldpc, char out_char[], double input[]) { NumberParityBits, max_iter, r_scale_factor, q_scale_factor, data_int ); } - extract_output(out_char, DecodedBits, ParityCheckCount, max_iter, CodeLength, NumberParityBits); + int iter = extract_output(out_char, DecodedBits, ParityCheckCount, max_iter, CodeLength, NumberParityBits); /* Clean up memory */ @@ -662,6 +662,8 @@ void run_ldpc_decoder(struct LDPC *ldpc, char out_char[], double input[]) { /* printf( "Cleaning v-nodes \n" ); */ free( v_nodes ); + + return iter; } @@ -700,7 +702,7 @@ void sd_to_llr(double llr[], double sd[], int n) { } -void extract_output(char out_char[], int DecodedBits[], int ParityCheckCount[], int max_iter, int CodeLength, int NumberParityBits) { +int extract_output(char out_char[], int DecodedBits[], int ParityCheckCount[], int max_iter, int CodeLength, int NumberParityBits) { int i, j; /* extract output bits from iteration that solved all parity @@ -724,5 +726,6 @@ void extract_output(char out_char[], int DecodedBits[], int ParityCheckCount[], } } //fprintf(stderr, "iter: %d\n", iter); + return iter; } diff --git a/codec2-dev/src/mpdecode_core.h b/codec2-dev/src/mpdecode_core.h index e665a922..bbb6250f 100644 --- a/codec2-dev/src/mpdecode_core.h +++ b/codec2-dev/src/mpdecode_core.h @@ -25,7 +25,7 @@ struct LDPC { double *H_cols; }; -void run_ldpc_decoder(struct LDPC *ldpc, char out_char[], double input[]); +int run_ldpc_decoder(struct LDPC *ldpc, char out_char[], double input[]); void sd_to_llr(double llr[], double sd[], int n);