aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/libbsc/bts_ericsson_rbs2000.c
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2011-03-06 23:20:28 +0100
committerHarald Welte <laforge@gnumonks.org>2011-03-06 23:20:28 +0100
commit40d1c3fef1376b8f570e51b8e9c67327b5029f70 (patch)
treec765cb75200619652f991ffd350e453b1ae48333 /openbsc/src/libbsc/bts_ericsson_rbs2000.c
parent8b277ac381542041685c5d03752817dedd217dde (diff)
RBS2000: Automatically connect/start/configure/enable most MOs
Diffstat (limited to 'openbsc/src/libbsc/bts_ericsson_rbs2000.c')
-rw-r--r--openbsc/src/libbsc/bts_ericsson_rbs2000.c26
1 files changed, 19 insertions, 7 deletions
diff --git a/openbsc/src/libbsc/bts_ericsson_rbs2000.c b/openbsc/src/libbsc/bts_ericsson_rbs2000.c
index 6480d34a5..1b64b369a 100644
--- a/openbsc/src/libbsc/bts_ericsson_rbs2000.c
+++ b/openbsc/src/libbsc/bts_ericsson_rbs2000.c
@@ -161,13 +161,12 @@ static void nm_statechg_evt(unsigned int signal,
case OM2K_MO_CLS_IS:
if (nsd->new_state->availability == OM2K_MO_S_ENABLED) {
/* IS is enabled, we can proceed with TRXC/RX/TX/TS */
+ break;
}
- if (nsd->new_state->operational != NM_OPSTATE_ENABLED ||
- nsd->new_state->availability == OM2K_MO_S_DISABLED)
+ if (nsd->new_state->operational != NM_OPSTATE_ENABLED)
break;
/* IS has started, we can configure + enable it */
abis_om2k_tx_is_conf_req(nsd->bts);
- abis_om2k_tx_enable_req(nsd->bts, nsd->om2k_mo);
break;
case OM2K_MO_CLS_TF:
if (nsd->new_state->operational != NM_OPSTATE_ENABLED ||
@@ -176,12 +175,10 @@ static void nm_statechg_evt(unsigned int signal,
if (nsd->new_state->availability == OM2K_MO_S_STARTED) {
/* TF has started, configure + enable it */
abis_om2k_tx_is_conf_req(nsd->bts);
- abis_om2k_tx_enable_req(nsd->bts, nsd->om2k_mo);
}
break;
case OM2K_MO_CLS_TRXC:
- if (nsd->new_state->operational != NM_OPSTATE_ENABLED ||
- nsd->new_state->availability != OM2K_MO_S_STARTED)
+ if (nsd->new_state->availability != OM2K_MO_S_STARTED)
break;
/* TRXC is started, connect the TX and RX objects */
memcpy(&mo, nsd->om2k_mo, sizeof(mo));
@@ -196,7 +193,6 @@ static void nm_statechg_evt(unsigned int signal,
break;
/* RX is started, configure + enable it */
abis_om2k_tx_rx_conf_req(nsd->obj);
- abis_om2k_tx_enable_req(nsd->bts, nsd->om2k_mo);
break;
case OM2K_MO_CLS_TX:
if (nsd->new_state->operational != NM_OPSTATE_ENABLED ||
@@ -204,6 +200,18 @@ static void nm_statechg_evt(unsigned int signal,
break;
/* RX is started, configure + enable it */
abis_om2k_tx_tx_conf_req(nsd->obj);
+ break;
+ }
+}
+
+static void nm_conf_res(struct nm_om2k_signal_data *nsd)
+{
+ switch (nsd->om2k_mo->class) {
+ case OM2K_MO_CLS_IS:
+ case OM2K_MO_CLS_TF:
+ case OM2K_MO_CLS_RX:
+ case OM2K_MO_CLS_TX:
+ /* If configuration was a success, enable it */
abis_om2k_tx_enable_req(nsd->bts, nsd->om2k_mo);
break;
}
@@ -219,6 +227,10 @@ static int nm_sig_cb(unsigned int subsys, unsigned int signal,
case S_NM_STATECHG_OPER:
case S_NM_STATECHG_ADM:
nm_statechg_evt(signal, signal_data);
+ break;
+ case S_NM_OM2K_CONF_RES:
+ nm_conf_res(signal_data);
+ break;
default:
break;
}