bts: refuse to set invalid frame numbers
A valid GSM frame ranges from 0 to 2715647. When using
set_current_frame_number() to set the current frame number (source
usually is the layer 1 and below) we should not allow invalid frame
numbers.
Note: this also fixes FnTest which uses invalid frame numbers for
testsing.
Change-Id: Iaae31b370fababba975d419b0d20ac15618c296e
Related: OS#5198
diff --git a/tests/fn/FnTest.cpp b/tests/fn/FnTest.cpp
index e5ac46d..ae15164 100644
--- a/tests/fn/FnTest.cpp
+++ b/tests/fn/FnTest.cpp
@@ -92,13 +92,13 @@
fn = calc_fn(bts, RFN_MODULUS - 1);
OSMO_ASSERT(fn == 42431);
- set_fn(bts, RFN_MODULUS * 123 + 16);
+ set_fn(bts, RFN_MODULUS * 12 + 16);
fn = calc_fn(bts, RFN_MODULUS - 4);
- OSMO_ASSERT(fn == 5219132);
+ OSMO_ASSERT(fn == 509180);
- set_fn(bts, RFN_MODULUS * 123 + 451);
+ set_fn(bts, RFN_MODULUS * 12 + 451);
fn = calc_fn(bts, RFN_MODULUS - 175);
- OSMO_ASSERT(fn == 5218961);
+ OSMO_ASSERT(fn == 509009);
/* Lets check a special cornercase. We assume that
@@ -125,7 +125,7 @@
/* Also check with some corner case
* values where Fn and RFn reach its
* maximum/minimum valid range */
- set_fn(bts, GSM_MAX_FN);
+ set_fn(bts, GSM_MAX_FN-1);
fn = calc_fn(bts, RFN_MODULUS-1);
OSMO_ASSERT(fn == GSM_MAX_FN-1);
@@ -133,9 +133,9 @@
fn = calc_fn(bts, RFN_MODULUS-1);
OSMO_ASSERT(fn == GSM_MAX_FN-1);
- set_fn(bts, GSM_MAX_FN);
+ set_fn(bts, GSM_MAX_FN-1);
fn = calc_fn(bts, 0);
- OSMO_ASSERT(fn == GSM_MAX_FN);
+ OSMO_ASSERT(fn == GSM_MAX_FN-RFN_MODULUS*2);
set_fn(bts, 0);
fn = calc_fn(bts, 0);