aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/libbsc/bts_ipaccess_nanobts.c
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>2015-04-01 15:34:35 +0200
committerHolger Hans Peter Freyther <holger@moiji-mobile.com>2015-04-01 15:34:35 +0200
commit878da382e08444c36299f1c4236c233c6acc11b3 (patch)
treea41681dbaa4f11816c8d2392bc057a44886bca4a /openbsc/src/libbsc/bts_ipaccess_nanobts.c
parent5047390eefae72d50cfc4cf821a70eba9d55d255 (diff)
WIP bts: Enable GPRS using OML if it wasn't enabledzecke/hacks/gprs-state
Diffstat (limited to 'openbsc/src/libbsc/bts_ipaccess_nanobts.c')
-rw-r--r--openbsc/src/libbsc/bts_ipaccess_nanobts.c79
1 files changed, 50 insertions, 29 deletions
diff --git a/openbsc/src/libbsc/bts_ipaccess_nanobts.c b/openbsc/src/libbsc/bts_ipaccess_nanobts.c
index 9e1b3c2cb..76b346d9b 100644
--- a/openbsc/src/libbsc/bts_ipaccess_nanobts.c
+++ b/openbsc/src/libbsc/bts_ipaccess_nanobts.c
@@ -377,29 +377,15 @@ static int nm_statechg_event(int evt, struct nm_statechg_signal_data *nsd)
bts = container_of(obj, struct gsm_bts, gprs.nse);
if (bts->gprs.mode == BTS_GPRS_NONE)
break;
- if (new_state->availability == NM_AVSTATE_DEPENDENCY) {
- data = nanobts_attr_nse_get(bts, &data_len);
- abis_nm_ipaccess_set_attr(bts, obj_class, bts->bts_nr,
- 0xff, 0xff, data, data_len);
- abis_nm_opstart(bts, obj_class, bts->bts_nr,
- 0xff, 0xff);
- }
+ if (new_state->availability == NM_AVSTATE_DEPENDENCY)
+ bts_model_nanobts_start_nse(bts);
break;
case NM_OC_GPRS_CELL:
bts = container_of(obj, struct gsm_bts, gprs.cell);
if (bts->gprs.mode == BTS_GPRS_NONE)
break;
- if (new_state->availability == NM_AVSTATE_DEPENDENCY) {
- data = nanobts_attr_cell_get(bts, &data_len);
- abis_nm_ipaccess_set_attr(bts, obj_class, bts->bts_nr,
- 0, 0xff, data, data_len);
- abis_nm_opstart(bts, obj_class, bts->bts_nr,
- 0, 0xff);
- abis_nm_chg_adm_state(bts, obj_class, bts->bts_nr,
- 0, 0xff, NM_STATE_UNLOCKED);
- abis_nm_chg_adm_state(bts, NM_OC_GPRS_NSE, bts->bts_nr,
- 0xff, 0xff, NM_STATE_UNLOCKED);
- }
+ if (new_state->availability == NM_AVSTATE_DEPENDENCY)
+ bts_model_nanobts_start_cell(bts);
break;
case NM_OC_GPRS_NSVC:
nsvc = obj;
@@ -410,17 +396,8 @@ static int nm_statechg_event(int evt, struct nm_statechg_signal_data *nsd)
if (nsvc->id == 1)
break;
if ((new_state->availability == NM_AVSTATE_OFF_LINE) ||
- (new_state->availability == NM_AVSTATE_DEPENDENCY)) {
- data = nanobts_attr_nscv_get(bts, &data_len);
- abis_nm_ipaccess_set_attr(bts, obj_class, bts->bts_nr,
- nsvc->id, 0xff,
- data, data_len);
- abis_nm_opstart(bts, obj_class, bts->bts_nr,
- nsvc->id, 0xff);
- abis_nm_chg_adm_state(bts, obj_class, bts->bts_nr,
- nsvc->id, 0xff,
- NM_STATE_UNLOCKED);
- }
+ (new_state->availability == NM_AVSTATE_DEPENDENCY))
+ bts_model_nanobts_start_nsvc(bts);
default:
break;
}
@@ -713,3 +690,47 @@ static void bts_model_nanobts_e1line_bind_ops(struct e1inp_line *line)
{
e1inp_line_bind_ops(line, &ipaccess_e1inp_line_ops);
}
+
+void bts_model_nanobts_start_nse(struct gsm_bts *bts)
+{
+ uint8_t *data;
+ size_t data_len;
+
+ data = nanobts_attr_nse_get(bts, &data_len);
+ abis_nm_ipaccess_set_attr(bts, NM_OC_GPRS_NSE, bts->bts_nr,
+ 0xff, 0xff, data, data_len);
+ abis_nm_opstart(bts, NM_OC_GPRS_NSE, bts->bts_nr,
+ 0xff, 0xff);
+}
+
+void bts_model_nanobts_start_cell(struct gsm_bts *bts)
+{
+ uint8_t *data;
+ size_t data_len;
+
+ data = nanobts_attr_cell_get(bts, &data_len);
+ abis_nm_ipaccess_set_attr(bts, NM_OC_GPRS_CELL, bts->bts_nr,
+ 0, 0xff, data, data_len);
+ abis_nm_opstart(bts, NM_OC_GPRS_CELL, bts->bts_nr,
+ 0, 0xff);
+ abis_nm_chg_adm_state(bts, NM_OC_GPRS_CELL, bts->bts_nr,
+ 0, 0xff, NM_STATE_UNLOCKED);
+ abis_nm_chg_adm_state(bts, NM_OC_GPRS_NSE, bts->bts_nr,
+ 0xff, 0xff, NM_STATE_UNLOCKED);
+}
+
+void bts_model_nanobts_start_nsvc(struct gsm_bts *bts)
+{
+ uint8_t *data;
+ size_t data_len;
+
+ data = nanobts_attr_nscv_get(bts, &data_len);
+ abis_nm_ipaccess_set_attr(bts, NM_OC_GPRS_NSVC, bts->bts_nr,
+ 0, 0xff,
+ data, data_len);
+ abis_nm_opstart(bts, NM_OC_GPRS_NSVC, bts->bts_nr,
+ 0, 0xff);
+ abis_nm_chg_adm_state(bts, NM_OC_GPRS_NSVC, bts->bts_nr,
+ 0, 0xff,
+ NM_STATE_UNLOCKED);
+}