add support for more nanoBTS 12.21 tests
* perform a channel usage test $ ./ipaccess-config -l 64 192.168.100.100 paccess-config.c:142 ==> ARFCN 3, RxLev 16 [...] <0020> ipaccess-config.c:142 ==> ARFCN 4, RxLev 33 <0020> ipaccess-config.c:142 ==> ARFCN 8, RxLev 6 <0020> ipaccess-config.c:142 ==> ARFCN 5, RxLev 16 <0020> ipaccess-config.c:142 ==> ARFCN 11, RxLev 5 <0020> ipaccess-config.c:142 ==> ARFCN 12, RxLev 8 <0020> ipaccess-config.c:142 ==> ARFCN 10, RxLev 6 [...] * perform a BCCH usage test $ ./ipaccess-config -l 65 192.168.100.100 [...] <0020> ipaccess-config.c:107 TEST REPORT: test_no=0x41 test_res=SUCCESS <0020> ipaccess-config.c:142 ==> ARFCN 4, RxLev 32 <0020> ipaccess-config.c:142 ==> ARFCN 8, RxLev 6 <0020> ipaccess-config.c:142 ==> ARFCN 12, RxLev 6 <0020> ipaccess-config.c:142 ==> ARFCN 20, RxLev 9 <0020> ipaccess-config.c:142 ==> ARFCN 31, RxLev 6 <0020> ipaccess-config.c:142 ==> ARFCN 37, RxLev 23 <0020> ipaccess-config.c:142 ==> ARFCN 49, RxLev 7 <0020> ipaccess-config.c:142 ==> ARFCN 53, RxLev 14 <0020> ipaccess-config.c:142 ==> ARFCN 57, RxLev 19 <0020> ipaccess-config.c:142 ==> ARFCN 60, RxLev 63 <0020> ipaccess-config.c:142 ==> ARFCN 71, RxLev 15 <0020> ipaccess-config.c:142 ==> ARFCN 90, RxLev 4 * perform a frequency sync test $ ./ipaccess-config -l 66 192.168.100.100 [...] <0020> ipaccess-config.c:107 TEST REPORT: test_no=0x42 test_res=SUCCESS <0020> ipaccess-config.c:130 ==> ARFCN 4, Frequency Error -2 <0020> ipaccess-config.c:130 ==> ARFCN 8, Frequency Error -40 <0020> ipaccess-config.c:130 ==> ARFCN 20, Frequency Error -21 <0020> ipaccess-config.c:130 ==> ARFCN 31, Frequency Error 1 <0020> ipaccess-config.c:130 ==> ARFCN 37, Frequency Error -4 <0020> ipaccess-config.c:130 ==> ARFCN 45, Frequency Error -4 <0020> ipaccess-config.c:130 ==> ARFCN 53, Frequency Error 22 <0020> ipaccess-config.c:130 ==> ARFCN 57, Frequency Error 3 <0020> ipaccess-config.c:130 ==> ARFCN 60, Frequency Error 0 <0020> ipaccess-config.c:130 ==> ARFCN 69, Frequency Error 2 <0020> ipaccess-config.c:130 ==> ARFCN 73, Frequency Error 30 <0020> ipaccess-config.c:130 ==> ARFCN 89, Frequency Error 44 <0020> ipaccess-config.c:130 ==> ARFCN 90, Frequency Error 8 <0020> ipaccess-config.c:130 ==> ARFCN 123, Frequency Error 27
This commit is contained in:
parent
d26d3d953a
commit
f1676e5f9d
|
@ -42,7 +42,7 @@
|
|||
|
||||
static struct gsm_network *gsmnet;
|
||||
|
||||
static int net_listen;
|
||||
static int net_listen_testnr;
|
||||
static int restart;
|
||||
static char *prim_oml_ip;
|
||||
static char *unit_id;
|
||||
|
@ -74,6 +74,28 @@ struct ipacc_ferr_elem {
|
|||
u_int8_t arfcn;
|
||||
} __attribute__((packed));
|
||||
|
||||
struct ipacc_cusage_elem {
|
||||
u_int16_t arfcn:10,
|
||||
rxlev:6;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
static const char *ipacc_testres_names[] = {
|
||||
[NM_IPACC_TESTRES_SUCCESS] = "SUCCESS",
|
||||
[NM_IPACC_TESTRES_TIMEOUT] = "TIMEOUT",
|
||||
[NM_IPACC_TESTRES_NO_CHANS] = "NO CHANNELS",
|
||||
[NM_IPACC_TESTRES_PARTIAL] = "PARTIAL",
|
||||
[NM_IPACC_TESTRES_STOPPED] = "STOPPED",
|
||||
};
|
||||
|
||||
const char *ipacc_testres_name(u_int8_t res)
|
||||
{
|
||||
if (res < ARRAY_SIZE(ipacc_testres_names) &&
|
||||
ipacc_testres_names[res])
|
||||
return ipacc_testres_names[res];
|
||||
|
||||
return "unknown";
|
||||
}
|
||||
|
||||
static int test_rep(void *_msg)
|
||||
{
|
||||
struct msgb *msg = _msg;
|
||||
|
@ -93,7 +115,7 @@ static int test_rep(void *_msg)
|
|||
/* data[3..4]: test_rep_len */
|
||||
test_rep_len = ntohs(*(u_int16_t *) &foh->data[3]);
|
||||
/* data[5]: ip.access test result */
|
||||
DEBUGPC(DNM, "test_res=%u\n", foh->data[5]);
|
||||
DEBUGPC(DNM, "test_res=%s\n", ipacc_testres_name(foh->data[5]));
|
||||
|
||||
/* data[6]: ip.access nested IE. 3 == freq_err_list */
|
||||
switch (foh->data[6]) {
|
||||
|
@ -108,6 +130,18 @@ static int test_rep(void *_msg)
|
|||
ife->arfcn, ntohs(ife->freq_err));
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
/* data[7..8]: length of ferr_list */
|
||||
ferr_list_len = ntohs(*(u_int16_t *) &foh->data[7]);
|
||||
|
||||
/* data[9...]: channel usage list elements */
|
||||
for (i = 0; i < ferr_list_len; i+= 2) {
|
||||
u_int16_t *cu_ptr = (u_int16_t *)(foh->data + 9 + i);
|
||||
u_int16_t cu = ntohs(*cu_ptr);
|
||||
DEBUGP(DNM, "==> ARFCN %4u, RxLev %2u\n",
|
||||
cu & 0x3ff, cu >> 10);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -192,9 +226,6 @@ static void bootstrap_om(struct gsm_bts *bts)
|
|||
printf("restarting BTS\n");
|
||||
abis_nm_ipaccess_restart(bts);
|
||||
}
|
||||
|
||||
if (net_listen) {
|
||||
}
|
||||
}
|
||||
|
||||
void input_event(int event, enum e1inp_sign_type type, struct gsm_bts_trx *trx)
|
||||
|
@ -227,11 +258,11 @@ int nm_state_event(enum nm_evt evt, u_int8_t obj_class, void *obj,
|
|||
if (evt == EVT_STATECHG_OPER &&
|
||||
obj_class == NM_OC_RADIO_CARRIER &&
|
||||
new_state->availability == 3 &&
|
||||
net_listen) {
|
||||
net_listen_testnr) {
|
||||
struct gsm_bts_trx *trx = obj;
|
||||
u_int8_t phys_config[] = { 0x02, 0x0a, 0x00, 0x01, 0x02 };
|
||||
abis_nm_perform_test(trx->bts, 2, 0, 0, 0xff,
|
||||
NM_IPACC_TESTNO_FREQ_SYNC, 1,
|
||||
net_listen_testnr, 1,
|
||||
phys_config, sizeof(phys_config));
|
||||
}
|
||||
return 0;
|
||||
|
@ -248,7 +279,7 @@ static void print_help(void)
|
|||
printf(" -o --oml-ip ip\n");
|
||||
printf(" -r --restart\n");
|
||||
printf(" -n flags/mask\tSet NVRAM attributes.\n");
|
||||
printf(" -l --listen\tPerform Frequency Error test\n");
|
||||
printf(" -l --listen testnr \tPerform speciified test number\n");
|
||||
printf(" -h --help this text\n");
|
||||
}
|
||||
|
||||
|
@ -270,10 +301,10 @@ int main(int argc, char **argv)
|
|||
{ "oml-ip", 1, 0, 'o' },
|
||||
{ "restart", 0, 0, 'r' },
|
||||
{ "help", 0, 0, 'h' },
|
||||
{ "listen", 0, 0, 'l' },
|
||||
{ "listen", 1, 0, 'l' },
|
||||
};
|
||||
|
||||
c = getopt_long(argc, argv, "u:o:rn:lh", long_options,
|
||||
c = getopt_long(argc, argv, "u:o:rn:l:h", long_options,
|
||||
&option_index);
|
||||
|
||||
if (c == -1)
|
||||
|
@ -299,7 +330,7 @@ int main(int argc, char **argv)
|
|||
nv_mask = ul & 0xffff;
|
||||
break;
|
||||
case 'l':
|
||||
net_listen = 1;
|
||||
net_listen_testnr = atoi(optarg);
|
||||
break;
|
||||
case 'h':
|
||||
print_usage();
|
||||
|
|
Loading…
Reference in New Issue