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);