fixeria has submitted this change. ( https://gerrit.osmocom.org/c/osmo-bts/+/33651 )
(
2 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: osmo-bts-trx: implement TCH/F2.4 support for CSD ......................................................................
osmo-bts-trx: implement TCH/F2.4 support for CSD
Change-Id: I31c59a78a362986b0cd1bc6650c325ee9f206519 Depends: libosmocore.git I4685376c8deb04db670684c9ebf685ad6fc989fa Related: OS#1572 --- M src/common/bts.c M src/osmo-bts-trx/sched_lchan_tchf.c 2 files changed, 16 insertions(+), 12 deletions(-)
Approvals: pespin: Looks good to me, but someone else must approve osmith: Looks good to me, but someone else must approve laforge: Looks good to me, approved Jenkins Builder: Verified
diff --git a/src/common/bts.c b/src/common/bts.c index 6a07ea5..3141eef 100644 --- a/src/common/bts.c +++ b/src/common/bts.c @@ -869,14 +869,10 @@ return false; /* invalid */ /* fall-through */ case RSL_CMOD_CSD_T_4k8: - return true; case RSL_CMOD_CSD_T_2k4: case RSL_CMOD_CSD_T_1k2: case RSL_CMOD_CSD_T_600: case RSL_CMOD_CSD_T_1200_75: - /* TODO: osmo-bts-trx does not support TCH/F2.4 */ - if (cm->chan_rt == RSL_CMOD_CRT_TCH_Bm) - return false; return true; default: return false; diff --git a/src/osmo-bts-trx/sched_lchan_tchf.c b/src/osmo-bts-trx/sched_lchan_tchf.c index b98373e..c3e9239 100644 --- a/src/osmo-bts-trx/sched_lchan_tchf.c +++ b/src/osmo-bts-trx/sched_lchan_tchf.c @@ -266,16 +266,16 @@ &n_errors, &n_bits_total); meas_avg_mode = SCHED_MEAS_AVG_M_S24N22; break; -#if 0 - /* TODO: CSD (TCH/F2.4): 3.6 kbit/s radio interface rate */ + /* CSD (TCH/F2.4): 3.6 kbit/s radio interface rate */ case GSM48_CMODE_DATA_3k6: /* TCH/F2.4 employs the same interleaving as TCH/FS (8 bursts), * so FACCH/F *does* steal TCH/F2.4 frames completely. */ + if (decode_fr_facch(l1ts, bi) == GSM_MACBLOCK_LEN) + return 0; /* TODO: emit BFI */ rc = gsm0503_tch_fr24_decode(&tch_data[0], BUFTAIL8(bursts_p), &n_errors, &n_bits_total); meas_avg_mode = SCHED_MEAS_AVG_M_S8N8; break; -#endif /* CSD (TCH/F14.4): 14.5 kbit/s radio interface rate */ case GSM48_CMODE_DATA_14k5: /* FACCH/F does not steal TCH/F14.4 frames, but only disturbs some bits */ @@ -478,9 +478,8 @@ len = 4 * 60; break; case GSM48_CMODE_DATA_3k6: /* TCH/[FH]2.4 */ - /* FIXME: TCH/F2.4 is not supported */ if (br->chan == TRXC_TCHF) - goto inval_mode2; /* 2 * 36 */ + len = 2 * 36; else len = 4 * 36; break; @@ -599,8 +598,7 @@ if (msg_facch != NULL) gsm0503_tch_fr_facch_encode(BUFPOS(bursts_p, 0), msgb_l2(msg_facch)); break; -#if 0 - /* TODO: CSD (TCH/F2.4): 3.6 kbit/s radio interface rate */ + /* CSD (TCH/F2.4): 3.6 kbit/s radio interface rate */ case GSM48_CMODE_DATA_3k6: /* FACCH/F does steal a TCH/F2.4 frame completely */ if (msg == msg_facch) @@ -608,7 +606,6 @@ else gsm0503_tch_fr24_encode(BUFPOS(bursts_p, 0), msgb_l2(msg_tch)); break; -#endif /* CSD (TCH/F14.4): 14.5 kbit/s radio interface rate */ case GSM48_CMODE_DATA_14k5: gsm0503_tch_fr144_encode(BUFPOS(bursts_p, 0), msgb_l2(msg_tch));