diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/host/trxcon/sched_lchan_common.c | 12 | ||||
-rw-r--r-- | src/host/trxcon/sched_lchan_tchf.c | 2 | ||||
-rw-r--r-- | src/host/trxcon/sched_prim.c | 8 | ||||
-rw-r--r-- | src/host/trxcon/sched_trx.h | 2 |
4 files changed, 10 insertions, 14 deletions
diff --git a/src/host/trxcon/sched_lchan_common.c b/src/host/trxcon/sched_lchan_common.c index 47b01621..03cdc67c 100644 --- a/src/host/trxcon/sched_lchan_common.c +++ b/src/host/trxcon/sched_lchan_common.c @@ -139,17 +139,17 @@ int sched_send_dt_conf(struct trx_instance *trx, struct trx_ts *ts, * Composes a bad frame indication message * according to the current tch_mode. * - * @param l2 Pointer to allocated byte array - * @param tch_mode Current TCH mode + * @param l2 Caller-allocated byte array + * @param lchan Logical channel to generate BFI for * @return How much bytes were written */ -size_t sched_bad_frame_ind(uint8_t *l2, uint8_t rsl_cmode, uint8_t tch_mode) +size_t sched_bad_frame_ind(uint8_t *l2, struct trx_lchan_state *lchan) { /* BFI is only required for speech */ - if (rsl_cmode != RSL_CMOD_SPD_SPEECH) + if (lchan->rsl_cmode != RSL_CMOD_SPD_SPEECH) return 0; - switch (tch_mode) { + switch (lchan->tch_mode) { case GSM48_CMODE_SIGN: case GSM48_CMODE_SPEECH_V1: /* Full Rate */ memset(l2, 0x00, GSM_FR_BYTES); @@ -163,7 +163,7 @@ size_t sched_bad_frame_ind(uint8_t *l2, uint8_t rsl_cmode, uint8_t tch_mode) /* FIXME: AMR is not implemented yet */ return 0; default: - LOGP(DSCH, LOGL_ERROR, "Invalid TCH mode: %u\n", tch_mode); + LOGP(DSCH, LOGL_ERROR, "Invalid TCH mode: %u\n", lchan->tch_mode); return 0; } } diff --git a/src/host/trxcon/sched_lchan_tchf.c b/src/host/trxcon/sched_lchan_tchf.c index e20b461f..86cdb12b 100644 --- a/src/host/trxcon/sched_lchan_tchf.c +++ b/src/host/trxcon/sched_lchan_tchf.c @@ -166,7 +166,7 @@ int rx_tchf_fn(struct trx_instance *trx, struct trx_ts *ts, bfi: /* Bad frame indication */ - l2_len = sched_bad_frame_ind(l2, rsl_cmode, tch_mode); + l2_len = sched_bad_frame_ind(l2, lchan); /* Didn't try to decode */ if (n_errors < 0) diff --git a/src/host/trxcon/sched_prim.c b/src/host/trxcon/sched_prim.c index acd08bf1..2aeaa5de 100644 --- a/src/host/trxcon/sched_prim.c +++ b/src/host/trxcon/sched_prim.c @@ -373,12 +373,8 @@ int sched_prim_dummy(struct trx_lchan_state *lchan) * other channels: LAPDm fill frame. */ if (CHAN_IS_TCH(chan) && TCH_MODE_IS_SPEECH(tch_mode)) { - /** - * Silence frame indication - * HACK: use actual rsl_cmode! - */ - prim_len = sched_bad_frame_ind(prim_buffer, - RSL_CMOD_SPD_SPEECH, tch_mode); + /* Bad frame indication */ + prim_len = sched_bad_frame_ind(prim_buffer, lchan); } else if (CHAN_IS_TCH(chan) && TCH_MODE_IS_DATA(tch_mode)) { /* FIXME: should we do anything for CSD? */ return 0; diff --git a/src/host/trxcon/sched_trx.h b/src/host/trxcon/sched_trx.h index f3fa9df0..2aafbf06 100644 --- a/src/host/trxcon/sched_trx.h +++ b/src/host/trxcon/sched_trx.h @@ -317,7 +317,7 @@ int sched_trx_handle_tx_burst(struct trx_instance *trx, /* Shared declarations for lchan handlers */ extern const uint8_t sched_nb_training_bits[8][26]; -size_t sched_bad_frame_ind(uint8_t *l2, uint8_t rsl_cmode, uint8_t tch_mode); +size_t sched_bad_frame_ind(uint8_t *l2, struct trx_lchan_state *lchan); int sched_send_dt_ind(struct trx_instance *trx, struct trx_ts *ts, struct trx_lchan_state *lchan, uint8_t *l2, size_t l2_len, int bit_error_count, bool dec_failed, bool traffic); |