aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2013-01-16 15:38:07 +0100
committerHolger Hans Peter Freyther <zecke@selfish.org>2013-01-23 18:23:58 +0100
commitf0c5a424af1a99d7d03a72eaa1ac6f87ea7b36c1 (patch)
tree5ab2a83a217f132cd4296a598ff434eed2df4cbf
parent76a1bf6136ce224b92c4192953d32d1efbebe9bc (diff)
sysmobts: Send GSM requests using the l1if_gsm_req_compl method
Prepare to change the queue and callback handling. For the TX power VTY command it is still possible that it will conflict with other callbacks and the easiest way is to beging with sending these requests through another method that allows us a more strict test.
-rw-r--r--src/osmo-bts-sysmo/l1_if.c6
-rw-r--r--src/osmo-bts-sysmo/l1_if.h2
-rw-r--r--src/osmo-bts-sysmo/oml.c19
3 files changed, 18 insertions, 9 deletions
diff --git a/src/osmo-bts-sysmo/l1_if.c b/src/osmo-bts-sysmo/l1_if.c
index 7b15e72e..5489f1ea 100644
--- a/src/osmo-bts-sysmo/l1_if.c
+++ b/src/osmo-bts-sysmo/l1_if.c
@@ -241,6 +241,12 @@ int l1if_req_compl(struct femtol1_hdl *fl1h, struct msgb *msg,
return 0;
}
+int l1if_gsm_req_compl(struct femtol1_hdl *fl1h, struct msgb *msg,
+ l1if_compl_cb *cb, void *data)
+{
+ return l1if_req_compl(fl1h, msg, 0, cb, data);
+}
+
/* allocate a msgb containing a GsmL1_Prim_t */
struct msgb *l1p_msgb_alloc(void)
{
diff --git a/src/osmo-bts-sysmo/l1_if.h b/src/osmo-bts-sysmo/l1_if.h
index 5ebd6ded..47d58de9 100644
--- a/src/osmo-bts-sysmo/l1_if.h
+++ b/src/osmo-bts-sysmo/l1_if.h
@@ -63,6 +63,8 @@ typedef int l1if_compl_cb(struct msgb *l1_msg, void *data);
/* send a request primitive to the L1 and schedule completion call-back */
int l1if_req_compl(struct femtol1_hdl *fl1h, struct msgb *msg,
int is_system_prim, l1if_compl_cb *cb, void *data);
+int l1if_gsm_req_compl(struct femtol1_hdl *fl1h, struct msgb *msg,
+ l1if_compl_cb *cb, void *data);
struct femtol1_hdl *l1if_open(void *priv);
int l1if_close(struct femtol1_hdl *hdl);
diff --git a/src/osmo-bts-sysmo/oml.c b/src/osmo-bts-sysmo/oml.c
index 6c8dfba7..6e3d78ee 100644
--- a/src/osmo-bts-sysmo/oml.c
+++ b/src/osmo-bts-sysmo/oml.c
@@ -286,7 +286,7 @@ static int trx_init(struct gsm_bts_trx *trx)
dev_par->fRxPowerLevel, dev_par->fTxPowerLevel);
/* send MPH-INIT-REQ, wait for MPH-INIT-CNF */
- return l1if_req_compl(fl1h, msg, 0, trx_init_compl_cb, fl1h);
+ return l1if_gsm_req_compl(fl1h, msg, trx_init_compl_cb, fl1h);
}
uint32_t trx_get_hlayer1(struct gsm_bts_trx *trx)
@@ -311,7 +311,7 @@ static int trx_close(struct gsm_bts_trx *trx)
prim_init(msgb_l1prim(msg), GsmL1_PrimId_MphCloseReq, fl1h);
LOGP(DL1C, LOGL_NOTICE, "Close TRX %u\n", trx->nr);
- return l1if_req_compl(fl1h, msg, 0, trx_close_compl_cb, fl1h);
+ return l1if_gsm_req_compl(fl1h, msg, trx_close_compl_cb, fl1h);
}
static int ts_connect(struct gsm_bts_trx_ts *ts)
@@ -324,7 +324,7 @@ static int ts_connect(struct gsm_bts_trx_ts *ts)
cr->u8Tn = ts->nr;
cr->logChComb = pchan_to_logChComb[ts->pchan];
- return l1if_req_compl(fl1h, msg, 0, opstart_compl_cb, &ts->mo);
+ return l1if_gsm_req_compl(fl1h, msg, opstart_compl_cb, &ts->mo);
}
GsmL1_Sapi_t lchan_to_GsmL1_Sapi_t(const struct gsm_lchan *lchan)
@@ -717,7 +717,8 @@ int lchan_activate(struct gsm_lchan *lchan)
get_value_string(femtobts_dir_names, act_req->dir));
/* send the primitive for all GsmL1_Sapi_* that match the LCHAN */
- l1if_req_compl(fl1h, msg, 0, lchan_act_compl_cb, lchan->ts->trx);
+ l1if_gsm_req_compl(fl1h, msg, lchan_act_compl_cb,
+ lchan->ts->trx);
}
lchan_set_state(lchan, LCHAN_S_ACT_REQ);
@@ -863,7 +864,7 @@ static int tx_confreq_logchpar(struct gsm_lchan *lchan, uint8_t direction)
&conf_req->cfgParams.setLogChParams.logChParams,
conf_req->cfgParams.setLogChParams.sapi);
- return l1if_req_compl(fl1h, msg, 0, chmod_modif_compl_cb, lchan->ts->trx);
+ return l1if_gsm_req_compl(fl1h, msg, chmod_modif_compl_cb, lchan->ts->trx);
}
int l1if_set_txpower(struct femtol1_hdl *fl1h, float tx_power)
@@ -875,7 +876,7 @@ int l1if_set_txpower(struct femtol1_hdl *fl1h, float tx_power)
conf_req->cfgParamId = GsmL1_ConfigParamId_SetTxPowerLevel;
conf_req->cfgParams.setTxPowerLevel.fTxPowerLevel = tx_power;
- return l1if_req_compl(fl1h, msg, 0, NULL, NULL);
+ return l1if_gsm_req_compl(fl1h, msg, NULL, NULL);
}
const enum GsmL1_CipherId_t rsl2l1_ciph[] = {
@@ -918,7 +919,7 @@ int l1if_set_ciphering(struct femtol1_hdl *fl1h,
memcpy(cfgr->cfgParams.setCipheringParams.u8Kc,
lchan->encr.key, lchan->encr.key_len);
- return l1if_req_compl(fl1h, msg, 0, chmod_modif_compl_cb, lchan->ts->trx);
+ return l1if_gsm_req_compl(fl1h, msg, chmod_modif_compl_cb, lchan->ts->trx);
}
@@ -1019,7 +1020,7 @@ int lchan_deactivate(struct gsm_lchan *lchan)
osmo_timer_del(&fl1h->alive_timer);
/* send the primitive for all GsmL1_Sapi_* that match the LCHAN */
- l1if_req_compl(fl1h, msg, 0, lchan_deact_compl_cb, lchan->ts->trx);
+ l1if_gsm_req_compl(fl1h, msg, lchan_deact_compl_cb, lchan->ts->trx);
}
lchan_set_state(lchan, LCHAN_S_REL_REQ);
@@ -1048,7 +1049,7 @@ static int lchan_deactivate_sacch(struct gsm_lchan *lchan)
get_value_string(femtobts_dir_names, deact_req->dir));
/* send the primitive for all GsmL1_Sapi_* that match the LCHAN */
- return l1if_req_compl(fl1h, msg, 0, lchan_deact_compl_cb, lchan->ts->trx);
+ return l1if_gsm_req_compl(fl1h, msg, lchan_deact_compl_cb, lchan->ts->trx);
}