aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Eversberg <andreas@eversberg.eu>2023-10-24 17:54:53 +0200
committerjolly <andreas@eversberg.eu>2023-10-27 10:35:21 +0000
commit8fafc1a74ce5e0f46ac509bc3e03be087e45251a (patch)
treebee82d97e212735543b097bc0c551af8cf01b7b0
parentd88cc624ed56deab0fe4c0fe837ae4f2f0a90382 (diff)
ASCI: Add control of uplink access to osmo-bts-sysmo
An MPH-INFO message is used to turn detection of uplink access bursts on or off. This is required for voice group/broadcast channels. Related: OS#4851 Depends: libosmocore.git Ibd6a1d468a70126a8f67e944fcb916969cc3c36b Change-Id: I61f232aa91191dae08404c1f08cad91964d74568
-rw-r--r--src/osmo-bts-sysmo/l1_if.c9
-rw-r--r--src/osmo-bts-sysmo/l1_if.h1
-rw-r--r--src/osmo-bts-sysmo/oml.c14
3 files changed, 22 insertions, 2 deletions
diff --git a/src/osmo-bts-sysmo/l1_if.c b/src/osmo-bts-sysmo/l1_if.c
index 4ab2ef64..49a8c5d7 100644
--- a/src/osmo-bts-sysmo/l1_if.c
+++ b/src/osmo-bts-sysmo/l1_if.c
@@ -604,6 +604,15 @@ static int mph_info_req(struct gsm_bts_trx *trx, struct msgb *msg,
else
l1if_rsl_chan_rel(lchan);
break;
+ case PRIM_INFO_ACT_UL_ACC:
+ case PRIM_INFO_DEACT_UL_ACC:
+ chan_nr = l1sap->u.info.u.ulacc_req.chan_nr;
+ lchan = get_lchan_by_chan_nr(trx, chan_nr);
+ if (l1sap->u.info.type == PRIM_INFO_ACT_UL_ACC)
+ l1if_set_ul_acc(lchan, true);
+ else
+ l1if_set_ul_acc(lchan, false);
+ break;
default:
LOGP(DL1C, LOGL_NOTICE, "unknown MPH-INFO.req %d\n",
l1sap->u.info.type);
diff --git a/src/osmo-bts-sysmo/l1_if.h b/src/osmo-bts-sysmo/l1_if.h
index 5b2da049..c81b6bd4 100644
--- a/src/osmo-bts-sysmo/l1_if.h
+++ b/src/osmo-bts-sysmo/l1_if.h
@@ -145,6 +145,7 @@ int l1if_rsl_chan_rel(struct gsm_lchan *lchan);
int l1if_rsl_chan_mod(struct gsm_lchan *lchan);
int l1if_rsl_deact_sacch(struct gsm_lchan *lchan);
int l1if_rsl_mode_modify(struct gsm_lchan *lchan);
+int l1if_set_ul_acc(struct gsm_lchan *lchan, bool active);
/* calibration loading */
int calib_load(struct femtol1_hdl *fl1h);
diff --git a/src/osmo-bts-sysmo/oml.c b/src/osmo-bts-sysmo/oml.c
index 9b760a35..e19c481e 100644
--- a/src/osmo-bts-sysmo/oml.c
+++ b/src/osmo-bts-sysmo/oml.c
@@ -1172,8 +1172,8 @@ int lchan_activate(struct gsm_lchan *lchan)
LOGPLCHAN(lchan, DL1C, LOGL_ERROR, "Trying to activate lchan, but commands in queue\n");
/* For handover, always start the main channel immediately. lchan->want_dl_sacch_active indicates whether dl
- * SACCH should be activated. Also, for HO and VGCS listener/talker detection, start the RACH SAPI. */
- if (lchan->ho.active == HANDOVER_ENABLED || rsl_chan_rt_is_asci(lchan->rsl_chan_rt))
+ * SACCH should be activated. */
+ if (lchan->ho.active == HANDOVER_ENABLED)
enqueue_sapi_act_cmd(lchan, GsmL1_Sapi_Rach, GsmL1_Dir_RxUplink);
for (i = 0; i < s4l->num_sapis; i++) {
@@ -1470,6 +1470,16 @@ int l1if_set_ciphering(struct femtol1_hdl *fl1h,
return 0;
}
+int l1if_set_ul_acc(struct gsm_lchan *lchan, bool active)
+{
+ if (active)
+ enqueue_sapi_act_cmd(lchan, GsmL1_Sapi_Rach, GsmL1_Dir_RxUplink);
+ else
+ check_sapi_release(lchan, GsmL1_Sapi_Rach, GsmL1_Dir_RxUplink);
+
+ return 0;
+}
+
int bts_model_adjst_ms_pwr(struct gsm_lchan *lchan)
{
if (lchan->state != LCHAN_S_ACTIVE)