From: Mazet Laurent Date: Thu, 27 Nov 2025 17:41:53 +0000 (+0100) Subject: fix X-Git-Url: https://secure.softndesign.org/git/?a=commitdiff_plain;h=bffd3cb5dfba5caa0a897afca0cf10ab8d38dac1;p=libviterbi.git fix --- diff --git a/Makerule.in b/Makerule.in index 09f258e..5621f42 100644 --- a/Makerule.in +++ b/Makerule.in @@ -45,7 +45,7 @@ clean-local: @$(call removefile,"object file",$(addprefix $(OBJ_BUILD_DIR)/,$(OBJECTS))) @$(call removefile,"tmp file",$(TMPFILES)) -purge: purge-recursive purge-local +purge: clean purge-recursive purge-local purge-local: clean-local @$(call removefile,"config file",$(CONFIGS)) diff --git a/doc/coders.txt b/doc/coders.txt index 761970b..85edb7a 100644 --- a/doc/coders.txt +++ b/doc/coders.txt @@ -101,5 +101,5 @@ 1 8 6 153 111 165 173 135 135 147 137 40 1 8 7 275 275 253 371 331 235 313 357 45 -## grep -v \^# coders.txt | awk 'NF>0 {printf "l=\"%d", $1; for (i=2;i0 {printf "%d", $1; for (i=2;i0 {printf "l=\"%d", $1; for (i=2;i0 {printf "%d", $1; for (i=2;i +#include + +#include "trellis.h" +#include "encoder.h" +#include "create_trellis.h" + +/* Pseudo-random bit sequence */ +void bit_gene (bit * a, int n) { + int i; + + for (i=0; i < n; i++) + *(a++) = rand()&1; +} + +int main(int argc, char* argv[]) { + + /* Coders definition */ + int nb_unprotected_bits = 0; + int nb_inputs; + int nb_coded_inputs = 1; + int nb_outputs; + int nb_coded_outputs = 2; + int nb_registers = 2; + int *coders; + conv_encoder *enc; + + /* Viterbi parameters */ + int deepness; + int window_dec_size ; + int history_size; + trellis *tr; + + /* Data paramaters */ + int nb_data_bits = 128*8; + int nb_uncoded_bits; + int nb_coded_bits; + int nb_metrics; + int nb_packets = 1024; + + /* Various blocks */ + bit *x; + bit *y; + metric_t *metrics; + int *tmp; + bit *xdecod; + + /* Indexes */ + int i, j, k, l; + int nb_bit_errors; + int nb_packet_errors = 0; + + /* Argument processing */ + if ((argc > 1) && (argv[1][0] == '-') && (argv[1][1] == 'h')) { + printf ("prog_test [#unprotected #inputs #outputs #registers coder_1 coder_2...]\n"); + exit (1); + } + if (argc > 1) nb_unprotected_bits = (int) strtol(argv[1], NULL, 10); + if (argc > 2) nb_coded_inputs = (int) strtol(argv[2], NULL, 10); + if (argc > 3) nb_coded_outputs = (int) strtol(argv[3], NULL, 10); + if (argc > 4) nb_registers = (int) strtol(argv[4], NULL, 10); + + coders = (int *) malloc(nb_coded_outputs*sizeof(int)); + if (argc == 1) { coders[0] = 5; coders[1] = 7; } + else if (argc != 5+nb_coded_outputs) { + printf ("Wrong number of arguments\n"); + exit(1); + } + for (i=0; i 5+i) coders[i] = (int) strtol(argv[5+i], NULL, 8); + + /* Encoder descriptions */ + printf ("#S/#I/#O/#R: (%d,%d,%d,%d) [", nb_unprotected_bits, + nb_coded_inputs, nb_coded_outputs, nb_registers); + for (i=0; i>=1) + if (bits & 1) + m++; + + metrics[k] = m; + } +#endif + /* acs */ + tr->acs (tr, metrics); + + /* Normalize node metrics */ + /* normalize_node_metrics_trellis (tr, 0); */ + } + + /* Decoded bits */ + nb_dec_symb = backtrace_trellis (tr, 0, deepness, window_dec_size, tmp); + + for (j=0; j -#include - -#include "trellis.h" -#include "encoder.h" -#include "create_trellis.h" - -/* Pseudo-random bit sequence */ -void bit_gene (bit * a, int n) { - int i; - - for (i=0; i < n; i++) - *(a++) = rand()&1; -} - -int main(int argc, char* argv[]) { - - /* Coders definition */ - int nb_unprotected_bits = 0; - int nb_inputs; - int nb_coded_inputs = 1; - int nb_outputs; - int nb_coded_outputs = 2; - int nb_registers = 2; - int *coders; - conv_encoder *enc; - - /* Viterbi parameters */ - int deepness; - int window_dec_size ; - int history_size; - trellis *tr; - - /* Data paramaters */ - int nb_data_bits = 128*8; - int nb_uncoded_bits; - int nb_coded_bits; - int nb_metrics; - int nb_packets = 1024; - - /* Various blocks */ - bit *x; - bit *y; - metric_t *metrics; - int *tmp; - bit *xdecod; - - /* Indexes */ - int i, j, k, l; - int nb_bit_errors; - int nb_packet_errors = 0; - - /* Argument processing */ - if ((argc > 1) && (argv[1][0] == '-') && (argv[1][1] == 'h')) { - printf ("prog_test [#unprotected #inputs #outputs #registers coder_1 coder_2...]\n"); - exit (1); - } - if (argc > 1) nb_unprotected_bits = (int) strtol(argv[1], NULL, 10); - if (argc > 2) nb_coded_inputs = (int) strtol(argv[2], NULL, 10); - if (argc > 3) nb_coded_outputs = (int) strtol(argv[3], NULL, 10); - if (argc > 4) nb_registers = (int) strtol(argv[4], NULL, 10); - - coders = (int *) malloc(nb_coded_outputs*sizeof(int)); - if (argc == 1) { coders[0] = 5; coders[1] = 7; } - else if (argc != 5+nb_coded_outputs) { - printf ("Wrong number of arguments\n"); - exit(1); - } - for (i=0; i 5+i) coders[i] = (int) strtol(argv[5+i], NULL, 8); - - /* Encoder descriptions */ - printf ("#S/#I/#O/#R: (%d,%d,%d,%d) [", nb_unprotected_bits, - nb_coded_inputs, nb_coded_outputs, nb_registers); - for (i=0; i>=1) - if (bits & 1) - m++; - - metrics[k] = m; - } -#endif - /* acs */ - tr->acs (tr, metrics); - - /* Normalize node metrics */ - /* normalize_node_metrics_trellis (tr, 0); */ - } - - /* Decoded bits */ - nb_dec_symb = backtrace_trellis (tr, 0, deepness, window_dec_size, tmp); - - for (j=0; j