* set OML TEI and E1 timeslot in one command
* introduce new 'oml-tei' command of bs11_config
diff --git a/include/openbsc/abis_nm.h b/include/openbsc/abis_nm.h
index fb9e2f2..5d09172 100644
--- a/include/openbsc/abis_nm.h
+++ b/include/openbsc/abis_nm.h
@@ -539,9 +539,8 @@
int abis_nm_bs11_create_bport(struct gsm_bts *bts, u_int8_t idx);
int abis_nm_bs11_delete_object(struct gsm_bts *bts,
enum abis_bs11_objtype type, u_int8_t idx);
-int abis_nm_bs11_set_oml_tei(struct gsm_bts *bts, u_int8_t tei);
-int abis_nm_bs11_conn_oml(struct gsm_bts *bts, u_int8_t e1_port,
- u_int8_t e1_timeslot, u_int8_t e1_subslot);
+int abis_nm_bs11_conn_oml_tei(struct gsm_bts *bts, u_int8_t e1_port,
+ u_int8_t e1_timeslot, u_int8_t e1_subslot, u_int8_t tei);
int abis_nm_bs11_get_oml_tei_ts(struct gsm_bts *bts);
int abis_nm_bs11_get_serno(struct gsm_bts *bts);
int abis_nm_bs11_set_trx_power(struct gsm_bts_trx *trx, u_int8_t level);
diff --git a/src/abis_nm.c b/src/abis_nm.c
index b7565bd..a8bdd67 100644
--- a/src/abis_nm.c
+++ b/src/abis_nm.c
@@ -1594,19 +1594,6 @@
return abis_nm_sendmsg(bts, msg);
}
-int abis_nm_bs11_set_oml_tei(struct gsm_bts *bts, u_int8_t tei)
-{
- struct abis_om_hdr *oh;
- struct msgb *msg = nm_msgb_alloc();
-
- oh = (struct abis_om_hdr *) msgb_put(msg, ABIS_OM_FOM_HDR_SIZE);
- fill_om_fom_hdr(oh, 2, NM_MT_BS11_SET_ATTR, NM_OC_SITE_MANAGER,
- 0xff, 0xff, 0xff);
- msgb_tv_put(msg, NM_ATT_TEI, tei);
-
- return abis_nm_sendmsg(bts, msg);
-}
-
static const u_int8_t sm_attr[] = { NM_ATT_TEI, NM_ATT_ABIS_CHANNEL };
int abis_nm_bs11_get_oml_tei_ts(struct gsm_bts *bts)
{
@@ -1621,20 +1608,22 @@
return abis_nm_sendmsg(bts, msg);
}
-/* like abis_nm_conn_terr_traf */
-int abis_nm_bs11_conn_oml(struct gsm_bts *bts, u_int8_t e1_port,
- u_int8_t e1_timeslot, u_int8_t e1_subslot)
+/* like abis_nm_conn_terr_traf + set_tei */
+int abis_nm_bs11_conn_oml_tei(struct gsm_bts *bts, u_int8_t e1_port,
+ u_int8_t e1_timeslot, u_int8_t e1_subslot,
+ u_int8_t tei)
{
struct abis_om_hdr *oh;
struct abis_nm_channel *ch;
struct msgb *msg = nm_msgb_alloc();
oh = (struct abis_om_hdr *) msgb_put(msg, ABIS_OM_FOM_HDR_SIZE);
- fill_om_fom_hdr(oh, sizeof(*ch), NM_MT_BS11_SET_ATTR,
+ fill_om_fom_hdr(oh, sizeof(*ch)+2, NM_MT_BS11_SET_ATTR,
NM_OC_SITE_MANAGER, 0xff, 0xff, 0xff);
ch = (struct abis_nm_channel *) msgb_put(msg, sizeof(*ch));
fill_nm_channel(ch, e1_port, e1_timeslot, e1_subslot);
+ msgb_tv_put(msg, NM_ATT_TEI, tei);
return abis_nm_sendmsg(bts, msg);
}
diff --git a/src/bs11_config.c b/src/bs11_config.c
index 9fadc45..7605d93 100644
--- a/src/bs11_config.c
+++ b/src/bs11_config.c
@@ -92,8 +92,7 @@
abis_nm_bs11_create_envaBTSE(bts, 2);
abis_nm_bs11_create_envaBTSE(bts, 3);
- abis_nm_bs11_conn_oml(bts, 0, 1, 0xff);
- abis_nm_bs11_set_oml_tei(bts, TEI_OML);
+ abis_nm_bs11_conn_oml_tei(bts, 0, 1, 0xff, TEI_OML);
abis_nm_bs11_set_trx_power(&bts->trx[0], BS11_TRX_POWER_GSM_30mW);
@@ -440,6 +439,8 @@
sleep(5);
abis_nm_bs11_factory_logon(g_bts, 0);
command = NULL;
+ } else if (!strcmp(command, "oml-tei")) {
+ abis_nm_bs11_conn_oml_tei(g_bts, 0, 1, 0xff, TEI_OML);
} else if (!strcmp(command, "restart")) {
abis_nm_bs11_restart(g_bts);
command = NULL;