pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bts/+/41787?usp=email )
Change subject: ta_control: Move skip_block logic to helper function ......................................................................
ta_control: Move skip_block logic to helper function
This makes it more similar to code in power_control.c.
Change-Id: I174f2f941fbedbe0793cc0b93d01e53e23328cf2 --- M src/common/ta_control.c 1 file changed, 21 insertions(+), 10 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/87/41787/1
diff --git a/src/common/ta_control.c b/src/common/ta_control.c index 6fe409a..c3e4d67 100644 --- a/src/common/ta_control.c +++ b/src/common/ta_control.c @@ -22,6 +22,9 @@
/* Related specs: 3GPP TS 45.010 sections 5.5, 5.6 */
+#include <stdint.h> +#include <stdbool.h> + #include <osmo-bts/gsm_data.h> #include <osmo-bts/bts_trx.h> #include <osmo-bts/logging.h> @@ -39,6 +42,22 @@ #define TA_MAX_DEC_STEP 2
+/* Shall we skip current block based on configured interval? */ +static bool ctrl_interval_skip_block(struct gsm_lchan *lchan) +{ + /* TA control interval: how many blocks do we skip? */ + if (lchan->ta_ctrl.skip_block_num-- > 0) + return true; + + /* Reset the number of SACCH blocks to be skipped: + * ctrl_interval=0 => 0 blocks to skip, + * ctrl_interval=1 => 1 blocks to skip, + * ctrl_interval=2 => 3 blocks to skip, + * so basically ctrl_interval * 2 - 1. */ + lchan->ta_ctrl.skip_block_num = lchan->ts->trx->ta_ctrl_interval * 2 - 1; + return false; +} + /*! compute the new "Ordered Timing Advance" communicated to the MS and store it in lchan. * \param lchan logical channel for which to compute (and in which to store) new power value. * \param[in] ms_tx_ta The TA used by the MS and reported in L1SACCH, see struct gsm_sacch_l1_hdr field "ta". @@ -47,19 +66,11 @@ void lchan_ms_ta_ctrl(struct gsm_lchan *lchan, uint8_t ms_tx_ta, int16_t toa256) { int16_t new_ta; + /* Shall we skip current block based on configured interval? */ - - /* TA control interval: how many blocks do we skip? */ - if (lchan->ta_ctrl.skip_block_num-- > 0) + if (ctrl_interval_skip_block(lchan)) return;
- /* Reset the number of SACCH blocks to be skipped: - * ctrl_interval=0 => 0 blocks to skip, - * ctrl_interval=1 => 1 blocks to skip, - * ctrl_interval=2 => 3 blocks to skip, - * so basically ctrl_interval * 2 - 1. */ - lchan->ta_ctrl.skip_block_num = lchan->ts->trx->ta_ctrl_interval * 2 - 1; - int16_t delta_ta = toa256/256; if (toa256 >= 0) { if ((toa256 - (256 * delta_ta)) > TOA256_THRESH)