handover_test prep: allow arbitrary timeslots in create_bts() code
Allow passing timeslot config to create_bts(). Preparation for Ic645cea671aa4798804666b8886f11bab5351e11 to allow arbitrary timeslot configurations in the tests. Change-Id: I3ae898be4a503060c6bf30ae89115a75461ffc27
This commit is contained in:
parent
780f028a79
commit
e3eb67ccf7
|
@ -174,12 +174,27 @@ static void gen_meas_rep(struct gsm_lchan *lchan)
|
||||||
abis_rsl_rcvmsg(msg);
|
abis_rsl_rcvmsg(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct gsm_bts *create_bts()
|
enum gsm_phys_chan_config pchan_from_str(const char *str)
|
||||||
|
{
|
||||||
|
enum gsm_phys_chan_config pchan = gsm_pchan_parse(str);
|
||||||
|
if (pchan < 0) {
|
||||||
|
fprintf(stderr, "Invalid timeslot pchan type: %s\n", str);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
return pchan;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char * const bts_default_ts[] = {
|
||||||
|
"CCCH+SDCCH4", "TCH/F", "TCH/F", "TCH/F", "TCH/F", "TCH/H", "TCH/H", "NONE",
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct gsm_bts *create_bts(const char * const *ts_args)
|
||||||
{
|
{
|
||||||
static int arfcn = 870;
|
static int arfcn = 870;
|
||||||
struct gsm_bts *bts;
|
struct gsm_bts *bts;
|
||||||
struct e1inp_sign_link *rsl_link;
|
struct e1inp_sign_link *rsl_link;
|
||||||
int i;
|
int i;
|
||||||
|
struct gsm_bts_trx *trx;
|
||||||
|
|
||||||
bts = bsc_bts_alloc_register(bsc_gsmnet, GSM_BTS_TYPE_UNKNOWN, 0x3f);
|
bts = bsc_bts_alloc_register(bsc_gsmnet, GSM_BTS_TYPE_UNKNOWN, 0x3f);
|
||||||
if (!bts) {
|
if (!bts) {
|
||||||
|
@ -198,19 +213,23 @@ static struct gsm_bts *create_bts()
|
||||||
rsl_link->trx = bts->c0;
|
rsl_link->trx = bts->c0;
|
||||||
bts->c0->rsl_link = rsl_link;
|
bts->c0->rsl_link = rsl_link;
|
||||||
|
|
||||||
bts->c0->mo.nm_state.operational = NM_OPSTATE_ENABLED;
|
trx = gsm_bts_trx_num(bts, 0);
|
||||||
bts->c0->mo.nm_state.availability = NM_AVSTATE_OK;
|
|
||||||
bts->c0->mo.nm_state.administrative = NM_STATE_UNLOCKED;
|
trx->mo.nm_state.operational = NM_OPSTATE_ENABLED;
|
||||||
bts->c0->bb_transc.mo.nm_state.operational = NM_OPSTATE_ENABLED;
|
trx->mo.nm_state.availability = NM_AVSTATE_OK;
|
||||||
bts->c0->bb_transc.mo.nm_state.availability = NM_AVSTATE_OK;
|
trx->mo.nm_state.administrative = NM_STATE_UNLOCKED;
|
||||||
bts->c0->bb_transc.mo.nm_state.administrative = NM_STATE_UNLOCKED;
|
trx->bb_transc.mo.nm_state.operational = NM_OPSTATE_ENABLED;
|
||||||
|
trx->bb_transc.mo.nm_state.availability = NM_AVSTATE_OK;
|
||||||
|
trx->bb_transc.mo.nm_state.administrative = NM_STATE_UNLOCKED;
|
||||||
|
|
||||||
/* 4 full rate and 4 half rate channels */
|
/* 4 full rate and 4 half rate channels */
|
||||||
for (i = 1; i <= 6; i++) {
|
for (i = 0; i < 8; i++) {
|
||||||
bts->c0->ts[i].pchan_from_config = (i < 5) ? GSM_PCHAN_TCH_F : GSM_PCHAN_TCH_H;
|
trx->ts[i].pchan_from_config = pchan_from_str(ts_args[i]);
|
||||||
bts->c0->ts[i].mo.nm_state.operational = NM_OPSTATE_ENABLED;
|
if (trx->ts[i].pchan_from_config == GSM_PCHAN_NONE)
|
||||||
bts->c0->ts[i].mo.nm_state.availability = NM_AVSTATE_OK;
|
continue;
|
||||||
bts->c0->ts[i].mo.nm_state.administrative = NM_STATE_UNLOCKED;
|
trx->ts[i].mo.nm_state.operational = NM_OPSTATE_ENABLED;
|
||||||
|
trx->ts[i].mo.nm_state.availability = NM_AVSTATE_OK;
|
||||||
|
trx->ts[i].mo.nm_state.administrative = NM_STATE_UNLOCKED;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(bts->c0->ts); i++) {
|
for (i = 0; i < ARRAY_SIZE(bts->c0->ts); i++) {
|
||||||
|
@ -1505,7 +1524,7 @@ int main(int argc, char **argv)
|
||||||
fprintf(stderr, "- Creating %d BTS (one TRX each, "
|
fprintf(stderr, "- Creating %d BTS (one TRX each, "
|
||||||
"TS(1-4) are TCH/F, TS(5-6) are TCH/H)\n", n);
|
"TS(1-4) are TCH/F, TS(5-6) are TCH/H)\n", n);
|
||||||
for (i = 0; i < n; i++)
|
for (i = 0; i < n; i++)
|
||||||
bts[bts_num + i] = create_bts();
|
bts[bts_num + i] = create_bts(bts_default_ts);
|
||||||
bts_num += n;
|
bts_num += n;
|
||||||
test_case += 2;
|
test_case += 2;
|
||||||
} else
|
} else
|
||||||
|
|
Loading…
Reference in New Issue