From 40d1c3fef1376b8f570e51b8e9c67327b5029f70 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sun, 6 Mar 2011 23:20:28 +0100 Subject: RBS2000: Automatically connect/start/configure/enable most MOs --- openbsc/src/libbsc/bts_ericsson_rbs2000.c | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) (limited to 'openbsc/src/libbsc/bts_ericsson_rbs2000.c') 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; } -- cgit v1.2.3