library/Osmocom_Types: share RA generation helpers from BTS_Tests

Change-Id: I7c9c3d243b39bbd3d521009d23c1043df729ee10
This commit is contained in:
Vadim Yanitskiy 2020-08-26 02:53:10 +07:00
parent 74e1f6b5d6
commit 6f9f7d2662
2 changed files with 49 additions and 49 deletions

View File

@ -1348,55 +1348,6 @@ testcase TC_sacch_chan_act_ho_sync() runs on test_CT {
* RACH Handling
***********************************************************************/
/* like L1SAP_IS_PACKET_RACH */
private function ra_is_ps(OCT1 ra) return boolean {
if ((ra and4b 'F0'O == '70'O) and (ra and4b '0F'O != '0F'O)) {
return true;
}
return false;
}
private function ra_is_emerg(OCT1 ra) return boolean {
/* See also: 3GPP TS 04.08, Table 9.9, ra=101xxxxx */
if ((ra and4b 'E0'O == 'A0'O) and (ra and4b '1F'O != '1F'O)) {
return true;
}
return false;
}
/* generate a random RACH for circuit-switched */
private function f_rnd_ra_cs() return OCT1 {
var OCT1 ra;
do {
ra := f_rnd_octstring(1);
} while (ra_is_ps(ra));
return ra;
}
/* generate a random RACH for emergency */
private function f_rnd_ra_emerg() return OCT1 {
var OCT1 ra;
do {
ra := f_rnd_octstring(1);
} while (not ra_is_emerg(ra));
return ra;
}
/* generate a random RACH for packet-switched */
private function f_rnd_ra_ps() return OCT1 {
var OCT1 ra;
do {
ra := f_rnd_octstring(1);
} while (not ra_is_ps(ra));
return ra;
}
/* generate a random 11-bit RA (packet-switched only) */
private function f_rnd_ra11_ps() return BIT11 {
var integer ra11 := f_rnd_int(bit2int('11111111111'B));
return int2bit(ra11, 11);
}
/* Send 1000 RACH requests and check their RA+FN on the RSL side */
private function f_TC_rach_content(boolean emerg) runs on test_CT {
f_init();

View File

@ -198,5 +198,54 @@ function f_pad_bcd_number(hexstring number) return hexstring {
}
}
/* like L1SAP_IS_PACKET_RACH */
function ra_is_ps(OCT1 ra) return boolean {
if ((ra and4b 'F0'O == '70'O) and (ra and4b '0F'O != '0F'O)) {
return true;
}
return false;
}
function ra_is_emerg(OCT1 ra) return boolean {
/* See also: 3GPP TS 04.08, Table 9.9, ra=101xxxxx */
if ((ra and4b 'E0'O == 'A0'O) and (ra and4b '1F'O != '1F'O)) {
return true;
}
return false;
}
/* generate a random RACH for circuit-switched */
function f_rnd_ra_cs() return OCT1 {
var OCT1 ra;
do {
ra := f_rnd_octstring(1);
} while (ra_is_ps(ra));
return ra;
}
/* generate a random RACH for emergency */
function f_rnd_ra_emerg() return OCT1 {
var OCT1 ra;
do {
ra := f_rnd_octstring(1);
} while (not ra_is_emerg(ra));
return ra;
}
/* generate a random RACH for packet-switched */
function f_rnd_ra_ps() return OCT1 {
var OCT1 ra;
do {
ra := f_rnd_octstring(1);
} while (not ra_is_ps(ra));
return ra;
}
/* generate a random 11-bit RA (packet-switched only) */
function f_rnd_ra11_ps() return BIT11 {
var integer ra11 := f_rnd_int(bit2int('11111111111'B));
return int2bit(ra11, 11);
}
} with { encode "RAW"; variant "FIELDORDER(msb)" }