summaryrefslogtreecommitdiff
path: root/gr-fec
diff options
context:
space:
mode:
authorrear1019 <rear1019@posteo.de>2020-01-20 18:19:41 +0100
committerMichael Dickens <michael.dickens@ettus.com>2020-02-01 16:05:14 -0500
commit978b0b08a1ae55888fc0dcdb9c2fd1e98ee6f950 (patch)
tree6303848978269152dd8c087f1283dad49ffc0b40 /gr-fec
parent7e47f56ed86d94060658f1c643fdf7abfbf2d8cd (diff)
gr-fec/cc_encoder: Add checks for parameters
Diffstat (limited to 'gr-fec')
-rw-r--r--gr-fec/lib/cc_encoder_impl.cc20
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