diff options
author | Vadim Yanitskiy <axilirator@gmail.com> | 2017-12-16 14:53:48 +0700 |
---|---|---|
committer | Vadim Yanitskiy <axilirator@gmail.com> | 2017-12-16 15:24:54 +0700 |
commit | 2937cb4c16b6e5b9cf4fa139cfcaf678946f6cb2 (patch) | |
tree | 32862cb9d8b2cabbf2e1578e890c213f9ddebc9e /src/host/trxcon | |
parent | ab566a7aef67eeb2abd19fedc7ed8fc33e9de684 (diff) |
host/trxcon/scheduler: clean up the trx_lchan_state
There were some BTS specific variables, which are meaningless.
This change cleans them up, and also groups some measurement,
encryption, and AMR specific variables into sub-structures.
Change-Id: Ie753a7e3e7fa2b433d8319b3a05b85b8583d7be2
Diffstat (limited to 'src/host/trxcon')
-rw-r--r-- | src/host/trxcon/sched_lchan_common.c | 2 | ||||
-rw-r--r-- | src/host/trxcon/sched_lchan_xcch.c | 27 | ||||
-rw-r--r-- | src/host/trxcon/sched_trx.h | 92 |
3 files changed, 51 insertions, 70 deletions
diff --git a/src/host/trxcon/sched_lchan_common.c b/src/host/trxcon/sched_lchan_common.c index aa0614c3..8f061659 100644 --- a/src/host/trxcon/sched_lchan_common.c +++ b/src/host/trxcon/sched_lchan_common.c @@ -95,7 +95,7 @@ int sched_send_data_ind(struct trx_instance *trx, struct trx_ts *ts, data->link_id = lchan_desc->link_id; data->band_arfcn = htons(trx->band_arfcn); data->frame_nr = htonl(lchan->rx_first_fn); - data->rx_level = -(lchan->rssi_sum / lchan->rssi_num); + data->rx_level = -(lchan->meas.rssi_sum / lchan->meas.rssi_num); /* FIXME: set proper values */ data->num_biterr = 0; diff --git a/src/host/trxcon/sched_lchan_xcch.c b/src/host/trxcon/sched_lchan_xcch.c index f57c8fce..cae3b19f 100644 --- a/src/host/trxcon/sched_lchan_xcch.c +++ b/src/host/trxcon/sched_lchan_xcch.c @@ -48,8 +48,6 @@ int rx_data_fn(struct trx_instance *trx, struct trx_ts *ts, { const struct trx_lchan_desc *lchan_desc; int n_errors, n_bits_total, rc; - uint8_t *rssi_num, *toa_num; - float *rssi_sum, *toa_sum; sbit_t *buffer, *offset; uint8_t l2[23], *mask; uint32_t *first_fn; @@ -60,33 +58,28 @@ int rx_data_fn(struct trx_instance *trx, struct trx_ts *ts, mask = &lchan->rx_burst_mask; buffer = lchan->rx_bursts; - rssi_sum = &lchan->rssi_sum; - rssi_num = &lchan->rssi_num; - toa_sum = &lchan->toa_sum; - toa_num = &lchan->toa_num; - LOGP(DSCHD, LOGL_DEBUG, "Data received on %s: fn=%u ts=%u bid=%u\n", lchan_desc->name, fn, ts->index, bid); /* Clear buffer & store frame number of first burst */ if (bid == 0) { + /* Clean up old measurements */ + memset(&lchan->meas, 0x00, sizeof(lchan->meas)); + memset(buffer, 0, 464); *first_fn = fn; *mask = 0x0; - - *rssi_sum = 0; - *rssi_num = 0; - *toa_sum = 0; - *toa_num = 0; } - /* Update mask and RSSI */ + /* Update mask */ *mask |= (1 << bid); - *rssi_sum += rssi; - (*rssi_num)++; - *toa_sum += toa; - (*toa_num)++; + + /* Update measurements */ + lchan->meas.rssi_sum += rssi; + lchan->meas.toa_sum += toa; + lchan->meas.rssi_num++; + lchan->meas.toa_num++; /* Copy burst to buffer of 4 bursts */ offset = buffer + bid * 116; diff --git a/src/host/trxcon/sched_trx.h b/src/host/trxcon/sched_trx.h index e1ef9244..de7e0734 100644 --- a/src/host/trxcon/sched_trx.h +++ b/src/host/trxcon/sched_trx.h @@ -154,65 +154,53 @@ struct trx_lchan_state { /*! \brief Burst buffer for TX */ ubit_t *tx_bursts; - /*! \brief Number of RSSI values */ - uint8_t rssi_num; - /*! \brief Sum of RSSI values */ - float rssi_sum; - /*! \brief Number of TOA values */ - uint8_t toa_num; - /*! \brief Sum of TOA values */ - float toa_sum; - /*! \brief (SACCH) loss detection */ - uint8_t lost; /*! \brief Mode for TCH channels */ uint8_t rsl_cmode, tch_mode; - /* AMR specific */ - /*! \brief 4 possible codecs for AMR */ - uint8_t codec[4]; - /*! \brief Number of possible codecs */ - int codecs; - /*! \brief Sum of bit error rates */ - float ber_sum; - /*! \brief Number of bit error rates */ - int ber_num; - /*! \brief Current uplink FT index */ - uint8_t ul_ft; - /*! \brief Current downlink FT index */ - uint8_t dl_ft; - /*! \brief Current uplink CMR index */ - uint8_t ul_cmr; - /*! \brief Current downlink CMR index */ - uint8_t dl_cmr; - /*! \brief If AMR loop is enabled */ - uint8_t amr_loop; - - /* TCH/H */ - uint8_t dl_ongoing_facch; /*! \brief FACCH/H on downlink */ - uint8_t ul_ongoing_facch; /*! \brief FACCH/H on uplink */ - - /*! \brief A5/x encryption algorithm */ - int encr_algo; - int encr_key_len; - uint8_t encr_key[MAX_A5_KEY_LEN]; - - /*! \brief Measurements */ + /*! \brief FACCH/H on downlink */ + uint8_t dl_ongoing_facch; + /*! \brief FACCH/H on uplink */ + uint8_t ul_ongoing_facch; + struct { - /*! \brief Cyclic clock counter */ - uint8_t clock; - /*! \brief Last RSSI values */ - int8_t rssi[32]; - /*! \brief Received RSSI values */ - int rssi_count; - /*! \brief Number of stored value */ - int rssi_valid_count; - /*! \brief Any burst received so far */ - int rssi_got_burst; + /*! \brief Number of RSSI values */ + uint8_t rssi_num; + /*! \brief Sum of RSSI values */ + float rssi_sum; + /*! \brief Number of TOA values */ + uint8_t toa_num; /*! \brief Sum of TOA values */ float toa_sum; - /*! \brief Number of TOA value */ - int toa_num; } meas; + + /* AMR specific */ + struct { + /*! \brief 4 possible codecs for AMR */ + uint8_t codec[4]; + /*! \brief Number of possible codecs */ + uint8_t codecs; + /*! \brief Current uplink FT index */ + uint8_t ul_ft; + /*! \brief Current downlink FT index */ + uint8_t dl_ft; + /*! \brief Current uplink CMR index */ + uint8_t ul_cmr; + /*! \brief Current downlink CMR index */ + uint8_t dl_cmr; + /*! \brief If AMR loop is enabled */ + uint8_t amr_loop; + /*! \brief Number of bit error rates */ + uint8_t ber_num; + /*! \brief Sum of bit error rates */ + float ber_sum; + } amr; + + /*! \brief A5/X encryption state */ + struct { + uint8_t key[MAX_A5_KEY_LEN]; + uint8_t key_len; + uint8_t algo; + } a5; }; struct trx_ts { |