fixeria has uploaded this change for review.

View Change

osmo-bts-trx: rx_tchh_fn(): mark valid SID frames as such

Set the FT (Frame Type) in the ToC (Type-of-Content) section as
defined in section 5.2 of RFC 5993. Before this change SID frames
had FT = 000 (Good Speech frame), because gsm0503_tch_hr_decode()
does not distinguish between speech and SID frames internally.

Change-Id: I09cec984bb60c754908126acf0300a2cc602485c
Related: SYS#5853
---
M src/osmo-bts-trx/sched_lchan_tchh.c
1 file changed, 4 insertions(+), 1 deletion(-)

git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/20/27520/1
diff --git a/src/osmo-bts-trx/sched_lchan_tchh.c b/src/osmo-bts-trx/sched_lchan_tchh.c
index d2ee4f0..5d2c12c 100644
--- a/src/osmo-bts-trx/sched_lchan_tchh.c
+++ b/src/osmo-bts-trx/sched_lchan_tchh.c
@@ -149,7 +149,10 @@
fn_is_odd, &n_errors, &n_bits_total);
if (rc == (GSM_HR_BYTES + 1)) { /* only for valid *speech* frames */
/* gsm0503_tch_hr_decode() prepends a ToC octet (see RFC5993), skip it */
- lchan_set_marker(osmo_hr_check_sid(&tch_data[1], GSM_HR_BYTES), lchan); /* DTXu */
+ bool is_sid = osmo_hr_check_sid(&tch_data[1], GSM_HR_BYTES);
+ if (is_sid) /* Mark SID frames as such: F = 0, FT = 010 */
+ tch_data[0] = (0x02 << 4);
+ lchan_set_marker(is_sid, lchan); /* DTXu */
}
break;
case GSM48_CMODE_SPEECH_AMR: /* AMR */

To view, visit change 27520. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Change-Id: I09cec984bb60c754908126acf0300a2cc602485c
Gerrit-Change-Number: 27520
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de>
Gerrit-MessageType: newchange