falconia has uploaded this change for review. (
https://gerrit.osmocom.org/c/osmo-bts/+/33069 )
Change subject: trx TCH DL: transmit invalid speech frames instead of dummy FACCH
......................................................................
trx TCH DL: transmit invalid speech frames instead of dummy FACCH
In speech TCH operation, there will always be times when a speech frame
needs to be transmitted on the downlink, but there is no frame available
to transmit (gap in the incoming RTP stream), or the logic of DTXd says
that no frame shall be transmitted at this FN, but we are not doing
physical DTXd. Previous osmo-bts-trx code sent dummy FACCH during such
conditions, but this approach is bad for TCH/HS where we would like to
transmit good speech frames or speech frame gaps one 20 ms frame at a
time, rather than take out pairs of frames for dummy FACCH/H. Other
BTS models (sysmoBTS PHY) send out invalid speech frames with inverted
CRC3 under the conditions in question - do the same in osmo-bts-trx.
The present change modifies osmo-bts-trx TCH DL frame gap behavior
only for TCH/FS, TCH/HS and TCH/EFS; for all other channel modes,
including AMR speech, the previous behavior of sending dummy FACCH
is left unchanged.
Depends: Iade3310e16b906efb6892d28f474a0d15204e861 (libosmocore)
Change-Id: I78106802a0aa4af39859c75d29fe0e77037899fe
---
M src/osmo-bts-trx/sched_lchan_tchf.c
M src/osmo-bts-trx/sched_lchan_tchh.c
2 files changed, 55 insertions(+), 2 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/69/33069/1
diff --git a/src/osmo-bts-trx/sched_lchan_tchf.c b/src/osmo-bts-trx/sched_lchan_tchf.c
index 0d0f52a..d7a8165 100644
--- a/src/osmo-bts-trx/sched_lchan_tchf.c
+++ b/src/osmo-bts-trx/sched_lchan_tchf.c
@@ -491,8 +491,22 @@
};
LOGL1SB(DL1P, LOGL_DEBUG, l1ts, br, "No TCH or FACCH prim for transmit.\n");
- gsm0503_tch_fr_encode(*bursts_p, dummy, sizeof(dummy), 1);
- chan_state->dl_facch_bursts = 8;
+ /* If the channel mode is TCH/FS or TCH/EFS, transmit a dummy
+ * speech frame with inverted CRC3, designed to induce a BFI
+ * condition in the MS receiver. In all other channel modes,
+ * transmit dummy FACCH like we always did before.
+ *
+ * FIXME: someone who knows AMR needs to look at this problem
+ * and decide what is the correct BTS Tx behavior for frame
+ * gaps in TCH/AFS.
+ */
+ if (tch_mode == GSM48_CMODE_SPEECH_V1 ||
+ tch_mode == GSM48_CMODE_SPEECH_EFR) {
+ gsm0503_tch_fr_encode(*bursts_p, NULL, 0, 1);
+ } else {
+ gsm0503_tch_fr_encode(*bursts_p, dummy, sizeof(dummy), 1);
+ chan_state->dl_facch_bursts = 8;
+ }
goto send_burst;
}
diff --git a/src/osmo-bts-trx/sched_lchan_tchh.c b/src/osmo-bts-trx/sched_lchan_tchh.c
index c6c2cd0..3d51493 100644
--- a/src/osmo-bts-trx/sched_lchan_tchh.c
+++ b/src/osmo-bts-trx/sched_lchan_tchh.c
@@ -404,6 +404,19 @@
};
LOGL1SB(DL1P, LOGL_INFO, l1ts, br, "No TCH or FACCH prim for transmit.\n");
+ /* If the channel mode is TCH/HS, transmit a dummy speech frame
+ * with inverted CRC3, designed to induce a BFI condition in
+ * the MS receiver. In all other channel modes, transmit
+ * dummy FACCH like we always did before.
+ *
+ * FIXME: someone who knows AMR needs to look at this problem
+ * and decide what is the correct BTS Tx behavior for frame
+ * gaps in TCH/AHS.
+ */
+ if (tch_mode == GSM48_CMODE_SPEECH_V1) {
+ gsm0503_tch_hr_encode(*bursts_p, NULL, 0);
+ goto send_burst;
+ }
/* FACCH/H can only be scheduled at specific TDMA offset */
if (!sched_tchh_dl_facch_map[br->fn % 26]) {
--
To view, visit
https://gerrit.osmocom.org/c/osmo-bts/+/33069
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Change-Id: I78106802a0aa4af39859c75d29fe0e77037899fe
Gerrit-Change-Number: 33069
Gerrit-PatchSet: 1
Gerrit-Owner: falconia <falcon(a)freecalypso.org>
Gerrit-MessageType: newchange