diff options
author | rear1019 <rear1019@posteo.de> | 2020-01-20 18:19:41 +0100 |
---|---|---|
committer | Michael Dickens <michael.dickens@ettus.com> | 2020-02-01 16:05:14 -0500 |
commit | 978b0b08a1ae55888fc0dcdb9c2fd1e98ee6f950 (patch) | |
tree | 6303848978269152dd8c087f1283dad49ffc0b40 /gr-fec | |
parent | 7e47f56ed86d94060658f1c643fdf7abfbf2d8cd (diff) |
gr-fec/cc_encoder: Add checks for parameters
Diffstat (limited to 'gr-fec')
-rw-r--r-- | gr-fec/lib/cc_encoder_impl.cc | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/gr-fec/lib/cc_encoder_impl.cc b/gr-fec/lib/cc_encoder_impl.cc index b20c7aa417..871bf96a05 100644 --- a/gr-fec/lib/cc_encoder_impl.cc +++ b/gr-fec/lib/cc_encoder_impl.cc @@ -59,6 +59,26 @@ cc_encoder_impl::cc_encoder_impl(int frame_size, "cc_encoder: Number of polynomials must be the same as the value of rate"); } + if (d_rate < 2) { + throw std::runtime_error("cc_encoder: inverse rate r must be > 2"); + } + + if (k < 2 || k > 31) { + throw std::runtime_error("cc_encoder: constraint length K must in be the range [2, 31]"); + } + + if (d_start_state >= (1u << (d_k - 1))) { + throw std::runtime_error("cc_encoder: start state is invalid; must be in range [0, 2^(K-1)-1] where K is the constraint length"); + } + + if (frame_size < 1) { + throw std::runtime_error("cc_encoder: frame_size must be > 0"); + } + + if (mode != CC_STREAMING && mode != CC_TRUNCATED && mode != CC_TAILBITING && mode != CC_TERMINATED) { + throw std::runtime_error("cc_encoder: invalid mode passed"); + } + partab_init(); // set up a padding factor. If padding, extends the encoding |