diff options
author | Max <msuraev@sysmocom.de> | 2016-12-28 12:43:09 +0100 |
---|---|---|
committer | Max <msuraev@sysmocom.de> | 2017-01-04 11:25:17 +0100 |
commit | f9778b2a26ce06959ee7e188eb1d533d896f1846 (patch) | |
tree | 6726018873d26f98e57c72aa932882aaacebdbea /include | |
parent | c2ecca6b0496127709dcd3afa9d366085d8bec97 (diff) |
DTX AMR HR: fix inhibition
* Unlike in AMR FR, in AMR HR incoming ONSET have to be treated
differently depending on whether we've recently sent SID UPDATE or
EMPTY frame. Split ST_SID_U FSM state into 2 states to accommodate for
that and make sure that additional states specific to AMR HR are not
used for AMR FR.
* Avoid sending E_VOICE and E_SID_U in corresponding states
as those do not initiate FSM state transitions anyway. This decrease
extra load from FSM signalling which otherwise would be triggered on
per-frame basis.
* Introduce separate signal for SID First P1 -> P2 transition to avoid
confusion with E_COMPL and E_SID_U initiated transitions from P1
state.
* Don't init DTX FSM for SDCCH channels.
Change-Id: I229ba39a38a223fada4881fc9aca35d3639371f8
Related: OS#1801
Diffstat (limited to 'include')
-rw-r--r-- | include/osmo-bts/dtx_dl_amr_fsm.h | 2 | ||||
-rw-r--r-- | include/osmo-bts/msg_utils.h | 1 |
2 files changed, 3 insertions, 0 deletions
diff --git a/include/osmo-bts/dtx_dl_amr_fsm.h b/include/osmo-bts/dtx_dl_amr_fsm.h index 4fb2f251..f747f9f1 100644 --- a/include/osmo-bts/dtx_dl_amr_fsm.h +++ b/include/osmo-bts/dtx_dl_amr_fsm.h @@ -14,6 +14,7 @@ enum dtx_dl_amr_fsm_states { ST_SID_F2, ST_F1_INH, ST_U_INH, + ST_U_NOINH, ST_F1_INH_REC, ST_U_INH_REC, ST_SID_U, @@ -29,6 +30,7 @@ enum dtx_dl_amr_fsm_events { E_ONSET, E_FACCH, E_COMPL, + E_FIRST, E_INHIB, E_SID_F, E_SID_U, diff --git a/include/osmo-bts/msg_utils.h b/include/osmo-bts/msg_utils.h index 55e8475d..7ddbe88f 100644 --- a/include/osmo-bts/msg_utils.h +++ b/include/osmo-bts/msg_utils.h @@ -37,6 +37,7 @@ bool dtx_dl_amr_enabled(const struct gsm_lchan *lchan); void dtx_dispatch(struct gsm_lchan *lchan, enum dtx_dl_amr_fsm_events e); bool dtx_recursion(const struct gsm_lchan *lchan); void dtx_int_signal(struct gsm_lchan *lchan); +bool dtx_is_first_p1(const struct gsm_lchan *lchan); void dtx_cache_payload(struct gsm_lchan *lchan, const uint8_t *l1_payload, size_t length, uint32_t fn, int update); int dtx_dl_amr_fsm_step(struct gsm_lchan *lchan, const uint8_t *rtp_pl, |